33 - JUnit5 单元测试框架

JUnit5 框架构成

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")
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容