test-02-java 单元测试框架 junit5 入门介绍
拓展阅读
junit5 的入门例子
maven 引入
<dependencies>
<!-- 添加 JUnit 5 依赖项 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
方法
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
测试类
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
@Test
void testAdd() {
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.add(3, 7);
// Assert
assertEquals(10, result, "3 + 7 should equal 10");
}
}
详细介绍一下 junit5
JUnit 5 是 Java 中的下一代单元测试框架,与 JUnit 4 相比,它引入了许多新的特性和改进。
JUnit 5 由三个主要模块组成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。
以下是 JUnit 5 的一些主要特性和概念:
-
JUnit Platform: JUnit 5 的基础,提供了一个测试平台,用于运行不同测试框架的测试。它还支持通过插件机制扩展测试框架。
-
JUnit Jupiter: JUnit 5 的新测试引擎,支持最新的测试风格和功能。JUnit Jupiter 提供了注解驱动的测试、参数化测试、条件测试、嵌套测试等功能。
-
注解驱动的测试: 使用
@Test
、@BeforeEach
、@AfterEach
等注解进行测试方法的标记,相比 JUnit 4 更加灵活。 -
参数化测试: 使用
@ParameterizedTest
和@ValueSource
等注解,支持在一个测试方法上运行多次,每次使用不同的参数。 -
条件测试: 使用
@EnabledOnOs
、@DisabledIf
等条件注解,根据条件动态地启用或禁用测试。 -
嵌套测试: 使用
@Nested
注解,支持更好地组织测试类,使测试结构更清晰。
-
-
JUnit Vintage: 为了兼容 JUnit 3 和 JUnit 4 测试,JUnit 5 提供了 Vintage 引擎,使得旧有的测试可以在 JUnit 5 平台上运行。
-
测试接口和默认方法: JUnit 5 允许在测试接口中使用
@Test
和其他测试相关的注解,并且支持在接口中定义默认方法。这使得共享测试代码更为灵活。 -
扩展模型: JUnit 5 引入了扩展模型,通过编写自定义扩展,可以对测试执行过程中的各个阶段进行扩展和定制。这是一个强大的特性,用于实现更高级的测试控制和集成。
-
动态测试注册: JUnit 5 引入了
TestFactory
注解,使得测试可以在运行时动态生成。这对于根据运行时条件生成测试非常有用。 -
条件测试: JUnit 5 提供了
@EnabledOn
、@DisabledOn
、@EnabledIf
、@DisabledIf
等注解,可以根据条件启用或禁用测试。 -
JUnit Platform Launcher API: 允许通过编程方式运行测试,支持集成到不同的构建工具和 IDE 中。
-
并发测试支持: JUnit 5 提供了
@RepeatedTest
注解,支持更方便地编写和执行并发测试。 -
参数解析和转换: JUnit 5 提供了强大的参数解析和转换功能,使得测试方法可以接受更复杂的参数类型,并支持自定义的参数解析器。
小结
junit5 对比 junit4 可以说是划时代的提升。
这么多年过去了,就算是再顽固的系统,现在也开始使用 jdk1.8 了,这一点令人欣慰。
junit5 是新时代的单元测试,所以忘掉你的 junit4 吧。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!