Junit5系列-什麼是Junit5?
系列導航
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 ID:
org.junit.platform
-
Version:
1.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 ID:
org.junit.jupiter
-
Version:
5.3.2
-
工件ID:
JUnit Vintage
-
Group ID:
org.junit.vintage
-
Version:
5.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包版本之間的相容性。
在使用Maven 或Gradle引用多個上述工件時,可以使用以下Maven座標下提供Bill of Materials POM來簡化依賴關係管理 。
- Group ID:
org.junit
- Artifact ID:
junit-bom
- Version:
5.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 ID:
org.opentest4j
- Artifact ID:
opentest4j
- Version:
1.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:官網
相關文章
- Junit5系列-Junit5中Assertions斷言類
- Junit5系列-Junit5中Assumptions假設類
- Junit5系列-Junit5中@Disabled禁止執行
- Junit5系列-Junit5中@DisplayName自定義名稱
- Junit5系列-Junit5中assertThrows()與assertDoesNotThrow()方法詳解
- Junit5系列-Junit5中DisabledCondition條件測試執行
- JUnit5註解學習指引
- JUnit5編寫基本測試
- junit5 是不是全方面吊打 testng
- JUnit5的Tag、Filter、Order、LifecycleFilter
- JUnit5學習之三:Assertions類
- JUnit5學習之一:基本操作
- JUnit5學習之二:Assumptions類
- JUnit5依賴注入與測試介面依賴注入
- 基於 junit5 實現 junitperf 原始碼分析原始碼
- JUnit5學習之四:按條件執行
- JUnit5學習之八:綜合進階(終篇)
- Java新一代單元測試框架JUnit5速覽Java框架
- JUnit5學習之五:標籤(Tag)和自定義註解
- Springboot整合JUnit5優雅進行單元測試Spring Boot
- Spring 對 Junit4,Junit5 的支援上的運用Spring
- JUnit5的條件測試、巢狀測試、重複測試巢狀
- JUnit5學習之六:引數化測試(Parameterized Tests)基礎Zed
- JUnit5學習之七:引數化測試(Parameterized Tests)進階Zed
- 什麼是 DevSecOps?系列(一)dev
- 機器學習可解釋性系列 - 是什麼&為什麼&怎麼做機器學習
- Protocol Buffers 系列 (1) - 什麼是Protocol Buffers?Protocol
- 【Azure DevOps系列】什麼是Azure DevOpsdev
- Mysql系列第二十講 什麼是索引?MySql索引
- 什麼是cookie,什麼是sessionCookieSession
- 什麼是DNS,什麼是HostsDNS
- 什麼是模式? 什麼是框架?模式框架
- 這是什麼這是什麼
- 【來龍去脈系列】什麼是區塊鏈?區塊鏈
- 什麼是AOP系列之一:AOP概念解析(轉)
- 什麼是WebAuthn、FIDO 是什麼?Web
- ITIL是什麼意思?ITIL是什麼?
- 什麼是跨域,什麼是同源跨域