微商城網(wǎng)站開發(fā)網(wǎng)絡(luò)推廣的工作內(nèi)容
一.Junit的含義
Junit是一種Java編程語言的單元測試框架。它提供了一些用于編寫和運(yùn)行測試的注釋和斷言方法,并且可以方便地執(zhí)行測試并生成測試報(bào)告。Junit是開源的,也是廣泛使用的單元測試框架之一
二.Junit項(xiàng)目的創(chuàng)建
(1)先創(chuàng)建一個(gè) 普通的maven項(xiàng)目
? (2)然后在pom.xml文件里添加一些Junit的一些相關(guān)依賴
? ?
<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency><!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.1</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.9.1</version></dependency><!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.9.1</version></dependency><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.9.1</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite --><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.9.1</version></dependency><!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.1</version><scope>test</scope></dependency></dependencies>
三.Junit常用注解
1.@Test? 表示執(zhí)行此測試用例,使用@Test框架,我們不需要在類里創(chuàng)建mian方法,然后在main方法里調(diào)用測試方法,可以直接在類里定義測試方法
@Testvoid test1(){System.out.println("執(zhí)行測試用例1");}
2.@disabled? 表示不執(zhí)行此測試用例
3.@BeforeAll? @AfterAll? @BeforeEach @AfterEach
(1)@BeforeAll?在所有的測試用例執(zhí)行之前開始執(zhí)行且只執(zhí)行一次,因此它的方法應(yīng)該是屬于類的,是一個(gè)靜態(tài)方法。
(2)@AfterAll 在所有測試用例執(zhí)行之完開始執(zhí)行且只執(zhí)行一次,因此它的方法也是屬于類方法,是一個(gè)靜態(tài)方法。
(3)@BeforeEach在每個(gè)測試用例執(zhí)行前開始執(zhí)行
@BeforeEachvoid beforeeach(){System.out.println("這是beforeeach的語句");}
(4)@AfterEach在每個(gè)測試用例執(zhí)行完執(zhí)行
@AfterEachvoid aftereach(){System.out.println("這是aftereach語句");}
?三.junit參數(shù)傳遞
1.單種類型的參數(shù)
第一個(gè)注解@ParameterizedTest此注解作用在方法上,表示此方法支持多個(gè)傳入多個(gè)參數(shù)
第二個(gè)注解@ValueSource()此注解表示傳入一組同類型的數(shù)據(jù),例如ints={1,2,3}表示傳入一組int類型的數(shù)據(jù),strings={"小明","小凱"}表示傳入一組string類型的數(shù)據(jù)
但是這種方式只能傳遞一種類型的參數(shù),如果我們傳多種參數(shù)就會(huì)報(bào)錯(cuò)
2.多種類型的參數(shù)?
(1)Csv
注解@CsvSource({"第一組數(shù)據(jù)","第二組數(shù)據(jù)"},不同組數(shù)據(jù)之間用逗號(hào)分割,
一組數(shù)據(jù)
多組數(shù)據(jù)?
(2)Csv文件
讀取文件里的參數(shù),文件里面的參數(shù)以逗號(hào)分割
@CsvFileSource(resources="文件名")
在resources底下建立一個(gè)test7.csv文件?
2.方法
@MethodSource("方法名")
定義一個(gè)靜態(tài)方法,返回類型為Stream對(duì)象,內(nèi)部調(diào)用Stream.of()方法
si?
3.測試套件?注解@Suite
(1)通過類名運(yùn)行測試用例
@SelectClasses(),括號(hào)里面用于指定類名
(2) 通過包名運(yùn)行測試用例
@SelectPackages(value=? )用于指定包名, 注意包名底下的測試類必須是XXXTest的格式,且Suittest這個(gè)類不能在要指定的包名底下
指定單個(gè)包名?
指定多個(gè)包名
?
?四.assert斷言
只有斷言通過測試用例才通過,
1.Assertions.assertEquals(期待值,真實(shí)值)當(dāng)期待值和真實(shí)值一樣時(shí)測試用例才通過,當(dāng)期待值和真實(shí)值不一樣時(shí)會(huì)拋出異常
2.?Assertions.assertNotEquals(期待值,真實(shí)值)當(dāng)期待值和真實(shí)值不一致時(shí),測試用例才通過,否則會(huì)拋出異常
@ParameterizedTest@ValueSource(ints={2})void test6(int num){Assertions.assertNotEquals(1,num);}
3.?.?Assertions.assertNull(num),只有num為null時(shí)測試用例才通過,否則會(huì)拋出異常?
五.測試用例執(zhí)行的順序
?大家來想一個(gè)問題,這三個(gè)測試用例那個(gè)先執(zhí)行?是按一定照從上到下的順序嗎?
其實(shí)不是的,junit有自己的一套執(zhí)行順序的算法
但我們可以自己指定其測試用例執(zhí)行順序
(1)按照自己指定的順序執(zhí)行測試用例
(2) 按照任意順序執(zhí)行測試用例