??前言??
本篇文章主要介紹單元測試工具JUnit的使用。
??歡迎點贊 ?? 收藏 ?留言評論 ??私信必回喲??
??博主將持續(xù)更新學習記錄收獲,友友們有任何問題可以在評論區(qū)留言
??博客中涉及源碼及博主日常練習代碼均已上傳GitHub
??1.注解
JUnit提供了非常強大的注解功能,通過@Test
注解修飾到方法上,該方法就變?yōu)榱艘粋€測試方法,執(zhí)行當前類時,會自動的執(zhí)行該類下所有帶@Test
注解的用例。
在使用這些JUnit提供的注解時,需要現(xiàn)在pom.xml文件中進行配置:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
@Test
示例:
除了@Test
注解外,還有以下常用注解:
-
@BeforeEach
:當前的方法需要在每個用例執(zhí)行之前都執(zhí)行一次 -
@BeforeAll
:當前的方法需要在當前類下所有用例執(zhí)行之前執(zhí)行一次,且被該注解修飾的方法必須為靜態(tài)方法 -
@AfterEach
:當前的方法需要在每個用例執(zhí)行之后都執(zhí)行一次 -
@AfterAll
:當前的方法需要在當前類下所有用例執(zhí)行之后執(zhí)行一次,且被該注解修飾的方法必須為靜態(tài)方法
??2.斷言
檢查測試方法的期望結果值和真實返回值,通過Assertions
類實現(xiàn)。
- 斷言匹配/不匹配:
assertEquals()
、assertNotEquals()
- 斷言結果為真/為假:
assertTrue()
、assertFalse()
- 斷言結果為空/非空:
assertNull()
、assertNotNull()
@Test
void a() {
Assertions.assertTrue(1==1);
}
??3.用例的執(zhí)行順序
如下圖所示,測試用例的執(zhí)行并不會按照我們編寫代碼的順序來執(zhí)行
如果在實際測試中,我們需要完成連貫的多個步驟的測試,是需要規(guī)定測試用例執(zhí)行的順序的,可以通過@order
注解來實現(xiàn)排序:
- 先使用注解說明當前類下所有的用例需要使用
@Order
注解來進行排序(注意:該注解必須要用在類上) - 然后通過
@Order
來指定用例的具體順序
??4.參數(shù)化
參數(shù)化就是盡可能的通過一個用例,多組參數(shù)來模擬用戶的行為
在使用參數(shù)化注解之前需要先用@ParameterizedTest
聲明該方法為參數(shù)化方法,然后再通過注解提供數(shù)據(jù)來源。
單參數(shù):@ValueSource
(數(shù)據(jù)類型方法={參數(shù)1,參數(shù)2…})
多參數(shù):
1.從注解中手動編寫數(shù)據(jù)源@CsvSource
({“數(shù)據(jù)組合1”,“數(shù)據(jù)組合2”…}),每個雙引號是一組參數(shù)(測試用例)
2.從第三方csv文件讀取數(shù)據(jù)源
如果測試用例較多時,在注解處手動編寫數(shù)據(jù)源就有些不方便,我們這時就可以借助第三方csv文件來讀取數(shù)據(jù)源
動態(tài)參數(shù):
// 通過動態(tài)方法來提供數(shù)據(jù)源
@ParameterizedTest
@MethodSource("methodParams")
void dynamicParamsTest(String name,int age) {
System.out.println("name:"+name+",age:"+age);
}
static Stream<Arguments> methodParams() throws InterruptedException {
// 構造動態(tài)參數(shù)
String[] arr=new String[4];
for (int i=0;i< arr.length;i++) {
Thread.sleep(500);
arr[i]=System.currentTimeMillis()+"";
}
return Stream.of(
Arguments.arguments(arr[0],20),
Arguments.arguments(arr[1],19),
Arguments.arguments(arr[2],18),
Arguments.arguments(arr[3],17)
);
}
注意:當我們不指定數(shù)據(jù)源方法名時,會自動的找跟用例方法名同名的靜態(tài)方法
??5.測試套件
當我們一個類中有多個測試用例時,我們不可能挨個去運行,那樣將會很耗費時間,這時我們就需要測試套件來指定類或者指定包名來運行類下或者包下的所有測試用例。
如果要使用測試套件,首先我們需要先創(chuàng)建一個類,通過@Suite
注解標識該類為測試套件類(而不是測試類)
然后指定類或者包來運行其下的所有測試用例
指定類來運行用例:
指定包名來運行包下所有的用例:
如果使用包名來指定運行的范圍,那么該包下的測試類的命名需要以Test/Tests
結尾(T必須大寫)
??最后的話??
總結不易,希望uu們不要吝嗇你們的??喲(^U^)ノ~YO?。∪缬袉栴},歡迎評論區(qū)批評指正??文章來源:http://www.zghlxwxcb.cn/news/detail-784395.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-784395.html
到了這里,關于單元測試工具——JUnit的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!