Junit5测试框架
一、Junit5框架构成
与以前的 JUnit 版本不同,JUnit 5 由来自三个不同子项目的几个不同模块组成。
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
-
JUnit 平台是在 JVM 上启动测试框架的基础。它还定义了
[TestEngine](https://junit.org/junit5/docs/current/api/org.junit.platform.engine/org/junit/platform/engine/TestEngine.html)
用于开发在平台上运行的测试框架的 API。此外,该平台还提供了一个 控制台启动器,用于从命令行启动平台,并提供JUnit 平台套件引擎,用于使用平台上的一个或多个测试引擎运行自定义测试套件。流行的 IDE(参见IntelliJ IDEA、 Eclipse、NetBeans和 Visual Studio Code)和构建工具(参见Gradle、 Maven和上)。 -
JUnit Jupiter是用于在 JUnit 5 中编写测试和扩展的编程模型和 扩展模型的组合。Jupiter 子项目提供了一个
TestEngine
用于在平台上运行基于 Jupiter 的测试。 -
JUnit Vintage提供了一个
TestEngine
用于在平台上运行基于 JUnit 3 和 JUnit 4 的测试。它要求 JUnit - -
备注:JUnit 5 对 Java 运行环境的最低要求是 Java 8
二、Junit5新特性
- 嵌套单元测试
- Lambda支持
- 参数化测试
- 重复测试
- 动态测试
三、Junit5注解
用户手册
junit5与junit4的注解比较
junit5 | junit4 | 说明 |
---|---|---|
@Test | @Test | 被注解的方法是一个测试方法。与junit4相同 |
@BeforeAll | @BeforeClass | 被注解的(静态)方法将在当前类的所有@Test方法前执行一次 |
@BeforeEach | @Before | 被注解的方法将在当前类的每个@Test方法前执行 |
@AfterEach | @After | 被注解的方法将在当前类的每个@Test方法后执行 |
@AfterAll | @AfterClass | 被注解的(静态)方法将在当前类的所有@Test方法后执行一次 |
@Disable | @Ignore | 被注解的方法不会执行(跳过),但会报告已执行 |
常用注解
注解 | 说明 |
---|---|
@Test | 表名是一个测试方法 |
@DisplayName | 测试类或方法的显示名称 |
@BeforeEach | 表明在单个测试方法运行之前执行的测试方法 |
@AfterEach | 表明在单个测试方法运行之后执行的测试方法 |
@BeforeAll | 表明在所有测试方法运行之前执行的测试方法 |
@AfterAll | 表明在所有测试方法运行之后执行的测试方法 |
@Disabled | 禁用测试类或方法 |
@Tag | 为测试类或方法加标签 |
@RepeatedTest | 额外重复执行 |
@Nested | 嵌套测试 |
Junit5 套件执行注解
注解 | 作用 |
---|---|
@RunWith(JUnitPlatform.class) | 执行套件 |
@SelectPackages({"packageA","packageB"}) | 创建测试套件 |
@SelectClasses({a.class,b.class,c.class}) | 创建测试套件 |
@IncludePackages("PackageName") | 过滤需要执行的测试包 |
@ExcludePackages("PackageName") | 过滤不需要执行的测试包 |
@IncludeClassNamePatterns | 过滤需要执行的测试类 |
@ExcludeClassNamePatterns | 过滤不需要执行的测试类 |
@IncludeTags("sit") | 过滤需要执行的测试方法 |
@ExcludeTags("prod") | 过滤不需要执行的测试方法 |
网友评论