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")