ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 运行要求 * JDK 8 + ## JUnit5 简介 JUnit5与以前版本的 JUnit 不同,拆分成由三个不同子项目的几个不同模块组成: * **JUnit Platform**: 用于JVM上启动测试框架的基础服务,提供命令行,IDE和构建工具等方式执行测试的支持。 * **JUnit Jupiter**:包含 JUnit 5 新的编程模型和扩展模型,主要就是用于编写测试代码和扩展代码。 * **JUnit Vintage**:用于在JUnit 5 中兼容运行 JUnit3.x 和 JUnit4.x 的测试用例。 ## 新特性 * 提供全新的断言和测试注解,支持测试类内嵌 * 更丰富的测试方式:支持动态测试,重复测试,参数化测试等 * 实现了模块化,让测试执行和测试发现等不同模块解耦,减少依赖 * 提供对 Java 8 的支持,如 Lambda 表达式等。 ## maven依赖 ``` <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.x</version> <scope>test</scope> </dependency> ``` ## 项目中的目录结构 项目目录必须是如下,测试类规定标准是在test目录中进行测试 ``` ├── src │ ├── main │ │ └── java │ │ └── resources │ └── test │ │ └── java │ │ └── resources ``` ## 常用注解介绍 * @BeforeEach 和@AfterEach对应JUnit4的@Before 和@After。 * @BeforeAll 和@AfterAll对应JUnit4的@BeforeClass 和@AfterClass。 * @Disabled对应JUnit4的@Ignore 替换成。 * @Test 测试方法。 * @DisplayName 测试类或方法的显示名称。 * @Tag 为测试类或方法添加标签。 * @Order和@TestMethodOrder 指定测试方法顺序执行 * @RepeatedTest 指定测试方法重复执行N次 * @ExtendWith对应JUnit4的@RunWith。 ## 常用断言介绍 断言的使用, 必须先引入必须的包,IDE创建的会自动引入 ``` import static org.junit.jupiter.api.Assertions.*; ``` assertEquals(100, x): 断言相等 assertArrayEquals({1, 2, 3}, x): 断言数组相等 assertNull(x): 断言为null assertTrue(x > 0): 断言为true assertFalse(x < 0): 断言为false; assertNotEquals: 断言不相等 assertNotNull: 断言不为null assertThrows:断言抛出期望的异常 ## 参数化测试 * maven依赖 ``` <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <version>5.x</version> <scope>test</scope> </dependency> ``` * @ParameterizedTest 作为参数化测试的必要注解,替代了 @Test 注解。 * @ValueSource 数据参数源,支持 Java 的八大基本类型和字符串。 * 示例: ``` public class ParameterizedUnitTest { @ParameterizedTest @ValueSource(ints = {2, 4, 8}) void testNumberShouldBeEven(int num) { Assertions.assertEquals(0, num % 2); } @ParameterizedTest @ValueSource(strings = {"Effective Java", "Code Complete", "Clean Code"}) void testPrintTitle(String title) { System.out.println(title); } } ``` ## JUnit4迁移指南 JUnit5 平台通过 Jupiter 引擎来运行 JUnit 5 测试,Vintage 引擎来运行 JUnit 3 和 JUnit 4 测试。因此,已有的 JUnit 3 和 4 的测试不需要任何修改就可以直接在 JUnit5 平台上运行。只需要确保项目中引入Vintage 引擎,JUnit5平台会自动发现并使用该引擎来运行 JUnit 3 和 4 测试。开发人员可以按照自己的项目安排来规划迁移到 JUnit 5 的进度。可以保持已有的 JUnit 3 和 4 的测试用例不变,而新增加的测试用例则使用 JUnit 5。 ``` <dependency> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <version>5.x</version> <scope>test</scope> </dependency> ```