上一篇里面提到了Test注解,本篇簡單介紹下Before/After注解、Parameters注解和DataProvider注解。
Before/After注解
注解內容描述如下:
@BeforeSuite:帶有該注釋的方法將在該套件中的所有測試運行之前運行。
@AfterSuite:帶有該注釋的方法將在該套件中的所有測試運行之后運行。
@BeforeTest:帶有該注釋的方法將在運行屬於標記內的類的任何測試方法之前運行。
@AfterTest:帶有該注釋的方法將在運行屬於標記內的類的任何測試方法之后運行。
@BeforeClass:帶有該注釋的方法將在調用當前類的第一個測試方法之前運行。
@AfterClass:帶有該注釋的方法將再當前類中的所以測試方法運行之后運行。
@BeforeMethod:帶有該注釋的方法將在當前類中的每個測試方法之前運行。
@AfterMethod:帶有該注釋的方法將在當前類中的每個測試方法之后運行。
舉例:
package com.forest.testng; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterSuite; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class Demo3 { @BeforeSuite public void f1() { System.out.println("before suite"); } @AfterSuite public void f2() { System.out.println("after suite"); } @BeforeTest public void f3() { System.out.println("before test"); } @AfterTest public void f4() { System.out.println("after test"); } @BeforeClass public void f5() { System.out.println("before class"); } @AfterClass public void f6() { System.out.println("after class"); } @BeforeMethod public void f7() { System.out.println("before method"); } @AfterMethod public void f8() { System.out.println("after method"); } @Test public void test1() { System.out.println("Demo3...test1..."); } @Test public void test2() { System.out.println("Demo3...test2..."); } }
運行結果如圖:
Parameters注解
可以用作參數傳遞。
舉例:
編寫class文件demo如下:
package com.forest.testng; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class Demo { @Test @Parameters({"firstName","lastName"}) public void test1(String fn,String ln) { System.out.println("Demo...test..."); System.out.println(fn + "," + ln); } }
上述文件單獨運行肯定會報錯。下面我們在testng.xml文件中如下編寫:
<?xml version="1.0" encoding="UTF-8"?> <suite name="測試項目" parallel="false">
<test name="測試模塊">
<classes>
<class name="com.forest.testng.Demo5" /> </classes> </test> <parameter name="firstName" value="小燕子" /> <parameter name="lastName" value="永琪" /> </suite>
選中testng.xml文件,右鍵選擇Run As-->TestNG Suite即可運行查看結果。
DataProvider注解
DataProvider注解傳遞參數更為靈活。示例如下:
package com.forest.testng; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class Demo { @Test(dataProvider = "datas") //引用名稱叫“datas”的數據 public void test1(String fn,String ln) { System.out.println(fn + "." + ln); } @DataProvider(name="datas") //給數組命名成datas public Object[][] datas() { Object[][] datas = { {"七仙女","董永"}, {"織女","牛郎"} }; return datas; } }
運行結果為:
七仙女,董永 織女,牛郎 PASSED: test1("七仙女", "董永") PASSED: test1("織女", "牛郎") =============================================== Default test Tests run: 2, Failures: 0, Skips: 0 =============================================== =============================================== Default suite Total tests run: 2, Failures: 0, Skips: 0 ===============================================