JAVA单元测试——常用注解(案例源码分析)
添加配置junit5
<!-- org.junit.jupiter/junit-jupiter-engine --> <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.8.2</version><scope>test</scope> </dependency>JUnit作為目前Java領域內最為流行的單元測試框架已經走過了數十年。而JUnit5在JUnit4停止更新版本的3年后終于也于2017年發布了。
作為最新版本的JUnit框架,JUnit5與之前版本的Junit框架有很大的不同。首先Junit5由來自三個不同子項目的幾個不同模塊組成。
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
JUnit Platform: Junit Platform是在JVM上啟動測試框架的基礎,不僅支持Junit自制的測試引擎,其他測試引擎也都可以接入。
JUnit Jupiter: JUnit Jupiter提供了JUnit5的新的編程模型,是JUnit5新特性的核心。內部 包含了一個測試引擎,用于在Junit Platform上運行。
JUnit Vintage: 由于JUint已經發展多年,為了照顧老的項目,JUnit Vintage提供了兼容JUnit4.x,Junit3.x的測試引擎。
通過上述的介紹,不知道有沒有發現JUint5似乎已經不再滿足于安安靜靜做一個單元測試框架了,它的野心很大,想通過接入不同測試引擎,來支持各類測試框架的使用,成為一個單元測試的平臺。因此它也采用了分層的架構,分成了平臺層,引擎層,框架層。
JUnit5的注解與JUnit4的注解有所變化,以下列出的注解為部分我覺得常用的注解
**@Test 😗*表示方法是測試方法。但是與JUnit4的@Test不同,他的職責非常單一不能聲明任何屬性,拓展的測試將會由Jupiter提供額外測試
**@ParameterizedTest 😗*表示方法是參數化測試,下方會有詳細介紹
**@RepeatedTest 😗*表示方法可重復執行,下方會有詳細介紹
**@DisplayName 😗*為測試類或者測試方法設置展示名稱
**@BeforeEach 😗*表示在每個單元測試之前執行
**@AfterEach 😗*表示在每個單元測試之后執行
**@BeforeAll 😗*表示在所有單元測試之前執行
**@AfterAll 😗*表示在所有單元測試之后執行
**@Tag 😗*表示單元測試類別,類似于JUnit4中的@Categories
**@Disabled 😗*表示測試類或測試方法不執行,類似于JUnit4中的@Ignore
**@Timeout 😗*表示測試方法運行如果超過了指定時間將會返回錯誤
**@ExtendWith 😗*為測試類或測試方法提供擴展類引用
接下來用幾個案例來展示常用注解
**@BeforeEach 😗*表示在每個單元測試之前執行
**@AfterEach 😗*表示在每個單元測試之后執行
package tt;import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test;/*** @author yeqv* @program A2* @Classname T1* @Date 2022/2/8 17:25* @Email w16638771062@163.com*/ public class T1 {@Test@BeforeEachvoid b() {//方法B永遠在每個單元測試之前執行一次System.out.println("方法B");}@Test@AfterEachvoid a() {//方法A永遠在每個單元測試之后執行一次System.out.println("方法A");}@Testvoid c() {System.out.println("方法C");}@Testvoid d() {System.out.println("方法D");} } 執行方法C
執行方法D
執行所有單元時會在每一個單元前后分別執行一次
**@BeforeAll 😗*表示在所有單元測試之前執行
**@AfterAll 😗*表示在所有單元測試之后執行
package tt;import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test;/*** @author yeqv* @program A2* @Classname T1* @Date 2022/2/8 17:25* @Email w16638771062@163.com*/ public class T1 {@Test@BeforeAll//這里注意用靜態static void b() {//方法B永遠在每個單元測試之前執行一次System.out.println("方法B");}@Test@AfterAll//這里注意用靜態static void a() {//方法A永遠在每個單元測試之后執行一次System.out.println("方法A");}@Testvoid c() {System.out.println("方法C");}@Testvoid d() {System.out.println("方法D");} }執行所有的單元測試最前最后分別執行一次方法A和B
**@DisplayName 😗*為測試類或者測試方法設置展示名稱
**@ParameterizedTest 😗*表示方法是參數化測試,下方會有詳細介紹
String類型參數
int類型參數
多個String類型參數
多個int類型參數
@ParameterizedTest@CsvSource("12, 4, 5")@DisplayName("參數測試一")void b(int i, int j, int k) {System.out.println(i);System.out.println(j);System.out.println(k);}總結
以上是生活随笔為你收集整理的JAVA单元测试——常用注解(案例源码分析)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 东进数字卡会议编程
- 下一篇: 2020年第四届中国BIM(数字建造)经