網(wǎng)站建設(shè)教程賺找湖南嵐鴻認(rèn) 可抖音seo點(diǎn)擊軟件排名
Junit
為什么學(xué)了Selenium還需學(xué)習(xí)Junit
Selenium自動(dòng)化測試框架;Junit單元測試框架。
拿著一個(gè)技術(shù)寫自動(dòng)化測試用例(Selenium3)
拿著一個(gè)技術(shù)管理已經(jīng)編寫好的測試用例(Junit5)
Junit相關(guān)的技術(shù)
Junit是針對Java的一個(gè)單元測試框架
注解:
@Test:
表示當(dāng)前的這個(gè)方法是一個(gè)測試用例
@Disabled
當(dāng)前方法被忽略
@BeforeAll,@AfterAll,@BeforeEach,@AfterEach
你把什么樣的程序放到BeforeAll里面,把什么樣的程序放到AfterAll里面?
初始化放在前面,關(guān)閉數(shù)據(jù)庫放在后邊。
如果做UI自動(dòng)化,通常情況下,創(chuàng)建驅(qū)動(dòng),打開網(wǎng)頁,放到BeforeAll,關(guān)閉瀏覽器放到AfterAll里邊。
@Testpublic void Test01() {System.out.println("這是JunitTest里面的Test01");}@Testpublic void Test02() {System.out.println("這是JunitTest里面的Test02");}@Disabledpublic void Test03() {WebDriver webDriver = new ChromeDriver();webDriver.get("https://www.baidu.com");webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(6)"));}@BeforeAllpublic static void SetUp() {System.out.println("這是我們BeforeAll里面的語句");}@AfterAllpublic static void TearDown() {System.out.println("這是我們AfterAll的語句");}@BeforeEachpublic void BeforeEachTest() {System.out.println("這是BeforeEach里面的語句");}@AfterEachpublic void AfterEachTest() {System.out.println("這是AfterEach里面的語句");}
如果有5個(gè)測試用例,BeforeEach跑幾次,BeforeAll跑幾次?
5? ?1
如果有5個(gè)測試用例,AfterEach跑幾次,AfterAll跑幾次?
5? ?1
BeforeAll在所有的測試用例運(yùn)行之前跑響應(yīng)的方法
BeforeEach在每一個(gè)測試用例執(zhí)行之前跑對應(yīng)的方法
AfterAll在所有的測試用例運(yùn)行之后跑響應(yīng)的方法
AfterEach在每一個(gè)測試用例執(zhí)行之后跑對應(yīng)的方法
參數(shù)化:
單參數(shù)
@ParameterizedTest@ValueSource(ints = {1,2,3})void Test04(int num) {System.out.println(num);}@ParameterizedTest@ValueSource(strings = {"1","2","3"})void Test05(String number) {System.out.println(number);}
CSV獲取參數(shù)
@ParameterizedTest@CsvFileSource(resources = "test01.csv")void Test06(String name) {System.out.println(name);}
方法獲取參數(shù)
多參數(shù)
@Test和@ParameterizedTest不能同時(shí)使用?public static Stream<Arguments> Generator() {return Stream.of(Arguments.arguments(1,"張三"),Arguments.arguments(2,"李四"),Arguments.arguments(3,"王五"));} @ParameterizedTest@MethodSource("Generator")void Test07(int num,String name) {System.out.println(num + ":" + name);}
不想按默認(rèn)的順序的執(zhí)行+:
1)@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
? ?@order(1)? ?@order(2) ……
2)隨機(jī)生成
@TestMethodOrder(MethodOrderer.Random.class)
測試套件:
通過class運(yùn)行測試用例
通過包運(yùn)行測試用例?
斷言
斷言相等
@ParameterizedTest@ValueSource(ints = {1})void Test02(int num) {System.out.println(num);Assertions.assertEquals(1,num);}
斷言不相等
Assertions.assertNotEquals(2,num);
斷言為空
斷言不為空
構(gòu)建測試套件
1、
@Suite
//通過class測試用例運(yùn)行
@SelectClasses({JunitTest.class,JunitTest03.class})
public class RunSuite {
}
2、通過建立測試包
@Suite
//通過class測試用例運(yùn)行
@SelectPackages(value = {"Package01","Package02"})
public class RunSuite {
}