<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");
}
}
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 吧。