Junit引入
Junit來編寫和組織自動化測試用例,使用Selenium來實(shí)際模擬用戶與Web應(yīng)用程序的交互。也就是使用JUnit的測試功能來管理和運(yùn)行Selenium測試。常見的做法是,使用JUnit作為測試框架來編寫和管理測試用例,然后使用Selenium WebDriver來執(zhí)行與Web應(yīng)用程序的交互。
Junit是針對java的單元測試框架
我們學(xué)習(xí)的內(nèi)容如下:
注解
@Test
@Disabled
@BeforeAll,@AfterAll,@BeforeEach,@AfterEach
參數(shù)化
單參數(shù)
多參數(shù)
CSV獲取參數(shù)
方法獲取參數(shù)
測試套件
通過class運(yùn)行測試用例;通過包運(yùn)行測試用例
1:添加Junit依賴
注解
注解Test:表示當(dāng)前方法是一個測試用例
下方控制臺:成功是綠色的;
失敗就會報一堆紅的;
在方法的運(yùn)行圖標(biāo)上標(biāo)紅;意味則這個測試用例不能通過
注解:@Disabled
注解:@BeforeAll,@AfterAll
這個比較特殊,需要前面加static。因?yàn)樗轻槍︻惖?所以需要static。你想想是不是靜態(tài)的static才能做到比其它方法先執(zhí)行;類加載的時候執(zhí)行。在跑所有的測試用例之前會執(zhí)行這個;;所有的測試用例執(zhí)行完就會跑AfterAlI語句
想一想什么方法要放在這里面呢
創(chuàng)建驅(qū)動,打開網(wǎng)頁;初始化在前;而關(guān)閉在后。比如JDBC操作數(shù)據(jù)庫。
關(guān)閉瀏覽器在后
注解:@BeforeEach,@AfterEach
一個測試用例執(zhí)行前都會執(zhí)行BeforeEach;每一次測試用例執(zhí)行后都會執(zhí)行一次AfterEach
參數(shù)化
參數(shù)依賴于另一個注解;這又是另一個依賴
單參數(shù)@ValueSource
注解@Parameterized作用在方法上面,用來表示這個方法支持傳入多個參數(shù);
注解@ValueSource用于指定傳入?yún)?shù)的類型;例如:strings={}就表示傳入的是一個string類型的數(shù)組。@ValueSource注解當(dāng)中只支持一種數(shù)據(jù)類型。
這樣子;這個測試用例會跑3次;每一次取一個數(shù)字
多參數(shù)@CsvSource
傳不同類型數(shù)據(jù):分隔符用于分割不同類型;可以自己定義分。符號默認(rèn)是逗號分割;一個逗號隔開一組參數(shù);
@ParameterizedTest
@CsvSource(value = {"張三-20","李四-21","王五-22"},delimiter = '-')
public void printStringAndAge(String name,int age){
System.out.println("name:"+name+";age="+age);
}
如果參數(shù)當(dāng)中包含逗號:“,”,就需要使用單引號轉(zhuǎn)義字符串。例如:" ‘張,三’- 20 "
這樣子才能正確的輸出張,三
通過文件讀取參數(shù):@CsvFileSource(resources=“/文件名稱”)。這里讀取的內(nèi)容(resources=“/文件名稱”)也可以你自己指定一個
files = “C:\Users\廖雨wang\source\test01.csv”
resources目錄下創(chuàng)建這個文件
多參數(shù)@MethodSource
或者這樣子寫:
這兩個注解和test是沖突的;相當(dāng)于執(zhí)行兩次:第一次是如下這樣子;參數(shù)沒傳過來,當(dāng)然報錯。第二次相當(dāng)于把@test解注釋掉再執(zhí)行一次。一次通過;一次不通過。
第一次:
第二次:
測試用例執(zhí)行順序
如果你沒加任何的執(zhí)行順序指定;所有的測試用例一起執(zhí)行;它們的順序是固定的;就是看人家junit對這些是怎么實(shí)現(xiàn)的;不管你怎么調(diào)整都是固定的一樣執(zhí)行順序
指定順序:
1:先在類上添加@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
2:在要指定順序的方法上加@order(1);@order(2);@order(3);按照你的123順序進(jìn)行執(zhí)行
在類上加@TestMethodOrder(MethodOrderer.Random.class);就表示隨機(jī)的運(yùn)行機(jī)制
斷言
因?yàn)槲覀儧]有一個預(yù)期結(jié)果進(jìn)行效驗(yàn);就算進(jìn)行效驗(yàn)都是需要if判斷;是不是很麻煩
斷言相等:如果相等;測試用例就通過
斷言不相等:如果不相等;測試用例就通過
斷言為空:如果為空;測試用例就通過
斷言不為空:如果不為空;測試用例就通過文章來源:http://www.zghlxwxcb.cn/news/detail-671291.html
String str="123";
Assertions.assertNotNull(str)
測試套件
通過class測試用例運(yùn)行:
或者通過包名控制;這個注解要求傳的是string數(shù)組;這樣子就會按照先執(zhí)行Test01這個包的測試用例;再執(zhí)行Test08這個包的測試用例:文章來源地址http://www.zghlxwxcb.cn/news/detail-671291.html
到了這里,關(guān)于自動化測試之Junit的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!