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")
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容