JUnit5 框架构成
Junit Platform:这是 Junit 向测试平台演进,提供平台功能的模块,通过 Junit Platform,其他的自动化测试引擎或开发人员自己定制的引擎都可以接入 Junit 实现对接和执行。试想下将 TestNG 运行在 Junit 上,是不是有点意思了?
Junit Jupiter:这是 Junit5 的核心,可以看作是承载 Junit4 原有功能的演进,它包含了很多丰富的新特性来使 Junit 自动化测试更加方便、功能更加丰富和强大。本系列就会重点围绕 Jupiter 中的一些特性进行介绍。Jupiter 本身也是一个基于 Junit Platform 的引擎实现。
Junit Vintage:Junit 发展了数10年,JUnit3 和 JUnit4 都积累了大量的用户,作为新一代框架,这个模块是对 JUnit3,Junit4 版本兼容的测试引擎,使旧版本JUint 的自动化测试脚本也可以顺畅运行在 JUnit5 下,它也可以看做是基于 JUnit Platform 实现的引擎范例。
JUnit5 新特性
- 嵌套单元测试
- Lambda 支持
- 参数化测试
- 重复测试
- 动态测试
Junit5 依赖导入
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.5.2</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>1.5.1</version>
</dependency>
JUnit5 注解
- @Test
- @BeforeAll
- @AfterAll
- @BeforeEach
- @AfterEach
- @Nested
- @Disabled
- @DisplayName
- @ParameterizedTest
- @RepeatedTest
JUnit5 执行过程
套件测试
- @RunWith(JunitPlatform.class)
- @SelectPackages({"com.packageA", "com.packageB"})
- @IncludePackages("包名")
- @SelectClasses({xx.class, xxx.class, xxxx.class})
- @IncludeTags("production")
- @ExcludeTags("PROD")