Junit5系列-什麼是Junit5?

yoylee_web發表於2019-01-21

系列導航

點選跳轉到系列博文目錄導航

Junit5

官網:JUnit5 is the next generation of JUnit.

注意:以下內容絕大部分翻譯自官網

目標是為JVM上的開發人員端測試建立一個最新的基礎。例如支援了jdk8的lambda表示式,流式處理等。

JUnit 5是JUnit Lambda和它在Indiegogo上的眾籌活動的結果。

簡介

組成:
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

其中:
JUnit Platform
JUnit Platform 作為在JVM上啟動測試框架的基礎。
它還定義了TestEngine API,用於開發在平臺上執行的測試框架。
此外,該平臺提供了一個控制檯啟動器,用於從命令列啟動平臺,併為Gradle和Maven構建外掛,以及一個基於JUnit 4的執行器,用於在平臺上執行任何TestEngine。

JUnit Jupiter
JUnit Jupiter 是新的程式設計模型和擴充套件模型的組合,用於在JUnit 5中編寫測試和擴充套件。
Jupiter子專案為執行基於平臺的測試提供了一個測試引擎。

JUnit Vintage
JUnit Vintage 為在平臺上執行基於JUnit 3和JUnit 4的測試提供了一個測試引擎。
圖片來自網路

JDK 支援

JUnit 5在執行時要求Java 8(或更高)。但是,您仍然可以測試使用JDK的以前版本編譯的程式碼。

Maven 匯入

在使用maven專案時,必須要匯入下面的三個依賴,其他的依賴我們可以根據自己的需求匯入。

<dependencies>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>1.3.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.3.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>5.3.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

例如:如果我們需要使用junit5中的引數化測試功能,我們就需要再新增以下依賴:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-params</artifactId>
    <version>5.3.2</version>
    <scope>test</scope>
</dependency>

對於其他的元件,都有什麼作用呢?我們下面來看一下:

所有元件介紹

JUnit Platform

  • Group IDorg.junit.platform

  • Version1.3.2

  • Artifact IDs

    • junit-platform-commons

      JUnit的內部公共庫/實用程式。這些實用程式僅用於JUnit框架本身。不支援外部方的任何使用。使用風險自負!

    • junit-platform-console

      支援從控制檯在JUnit平臺上發現和執行測試。有關詳細資訊,請參閱 Console Launcher

    • junit-platform-console-standalone

      包含所有依賴項的可執行JAR在junit-platform-console-standalone 目錄下的Maven Central中提供 。有關詳細資訊,請參閱Console Launcher

    • junit-platform-engine

      測試引擎的公共API。有關詳細資訊,請參閱插入自己的測試引擎

    • junit-platform-launcher

      用於配置和啟動test plans的公共API - 通常由IDE和構建工具使用。有關詳細資訊,請參閱JUnit Platform Launcher API

    • junit-platform-runner

      用於在JUnit 4環境中的JUnit平臺上執行測試和測試套件的執行器。
      也就是我們在只有Junit4的環境下,我們通過新增此依賴,可以直接使用Junit5中的一些功能。
      有關詳細資訊,請參閱使用JUnit 4執行JUnit平臺

    • junit-platform-suite-api

      當我們需要進行巢狀測試時,就是該依賴上場的時候來了。由JUnitPlatform runner支援 ,可能由第三方 TestEngine實現支援。

    • junit-platform-surefire-provider

      支援使用Maven Surefire在JUnit平臺上發現和執行測試 。

JUnit Jupiter

  • Group IDorg.junit.jupiter

  • Version5.3.2

  • 工件ID

    • junit-jupiter-api

      用於對 JUnit Jupiter API 的 編寫測試擴充套件

    • junit-jupiter-engine

      JUnit Jupiter測試引擎實現,僅在執行時需要,也是我們在使用junit5時必須要新增的。

    • junit-jupiter-params

      支援JUnit Jupiter中的引數化測試。使用引數化測試的時候就要新增此依賴了。

    • junit-jupiter-migrationsupport

      從JUnit 4到JUnit Jupiter的遷移支援,僅在執行選定的JUnit 4規則時才需要。

JUnit Vintage

  • Group IDorg.junit.vintage

  • Version5.3.2

  • 工件ID

    • junit-vintage-engine

      JUnit Vintage測試引擎實現,允許在新的JUnit平臺上執行老的JUnit測試,即以JUnit 3或JUnit 4樣式編寫的測試。

Junit5 BOM

什麼事BOM?

BOM:Bill of Materials材料清單的意思,其定義一整套相互相容的jar包版本集合,使用時只需要依賴該BOM檔案,即可放心的使用需要的依賴jar包,且無需再指定版本號。BOM的維護方負責版本升級,並保證BOM中定義的jar包版本之間的相容性。

在使用MavenGradle引用多個上述工件時,可以使用以下Maven座標下提供Bill of Materials POM來簡化依賴關係管理 。

  • Group IDorg.junit
  • Artifact IDjunit-bom
  • Version5.3.2

也就是:

<dependency>
    <groupId>org.junit</groupId>
    <artifactId>junit-bom</artifactId>
    <version>5.3.2</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

新增了上述bom依賴後,我們便不需要在新增依賴的時候新增<version>5.3.2</version>版本號了,版本號與版本之間的關係直接有Bom控制。
不過要注意的是:並不是簡單的講上述依賴放在中而是放 下才會起作用

下面我們可以看一下,新增bom後的pom檔案部分內容:

<!--此處注意應該放在dependencyManagement中-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.junit</groupId>
            <artifactId>junit-bom</artifactId>
            <version>5.3.2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<!--可以不新增版本號,而由bom控制其版本依賴-->
<dependencies>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
    </dependency>
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
    </dependency>
</dependencies>

此外,大多數上述依賴對以下OpenTest4J JAR 具有直接或傳遞依賴性。所以當需要此依賴時,就需要加上了。

  • Group IDorg.opentest4j
  • Artifact IDopentest4j
  • Version1.1.1

也就是:

<dependency>
    <groupId>org.opentest4j</groupId>
    <artifactId>opentest4j</artifactId>
    <version>1.1.1</version>
    <scope>test</scope>
</dependency>

如果轉載此博文,請附上本文連結,謝謝合作~ :https://blog.csdn.net/csdn___lyy

如果感覺這篇文章對您有所幫助,請點選一下“喜歡”或者“關注”博主,您的喜歡和關注將是我前進的最大動力!

refer:官網

相關文章