TestNG的注解:
注解 | 描述 |
---|---|
@BeforeSuite | 注解的方法將只運行一次,運行所有測試前此套件中。 |
@AfterSuite | 注解的方法將只運行一次此套件中的所有測試都運行之后。 |
@BeforeClass | 注解的方法將只運行一次先行先試在當前類中的方法調用。 |
@AfterClass | 注解的方法將只運行一次后已經運行在當前類中的所有測試方法。 |
@BeforeTest | 注解的方法將被運行之前的任何測試方法屬於內部類的 <test>標簽的運行。 |
@AfterTest | 注解的方法將被運行后,所有的測試方法,屬於內部類的<test>標簽的運行。 |
@BeforeGroups | 組的列表,這種配置方法將之前運行。此方法是保證在運行屬於任何這些組第一個測試方法,該方法被調用。 |
@AfterGroups | 組的名單,這種配置方法后,將運行。此方法是保證運行后不久,最后的測試方法,該方法屬於任何這些組被調用。 |
@BeforeMethod | 注解的方法將每個測試方法之前運行。 |
@AfterMethod | 被注釋的方法將被運行后,每個測試方法。 |
@DataProvider |
標志着一個方法,提供數據的一個測試方法。注解的方法必須返回一個Object[] [],其中每個對象[]的測試方法的參數列表中可以分配。
該@Test 方法,希望從這個DataProvider的接收數據,需要使用一個dataProvider名稱等於這個注解的名字。 |
@Factory | 作為一個工廠,返回TestNG的測試類的對象將被用於標記的方法。該方法必須返回Object[]。 |
@Listeners | 定義一個測試類的監聽器。 |
@Parameters | 介紹如何將參數傳遞給@Test方法。 |
@Test | 標記一個類或方法作為測試的一部分。 |
寫一個簡單例子驗證常用注解的執行過程:
新建一個TestAnntation.java類
import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import org.testng.annotations.AfterMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeTest; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeSuite; import org.testng.annotations.AfterSuite; public class TestAnnotation { @Test public void testcase1() { System.out.println("執行case1"); } @Test public void testcase2() { System.out.println("執行case2"); } @BeforeMethod public void beforeMethod() { System.out.println("我是beforeMethod"); } @AfterMethod public void afterMethod() { System.out.println("我是afterMethod"); } @BeforeClass public void beforeClass() { System.out.println("我是BeforeClass"); } @AfterClass public void afterClass() { System.out.println("我是AfterClass"); } @BeforeTest public void beforeTest() { System.out.println("我是BeforeTest"); } @AfterTest public void afterTest() { System.out.println("我是AfterTest"); } @BeforeSuite public void beforeSuite() { System.out.println("我是BeforeSuite"); } @AfterSuite public void afterSuite() { System.out.println("我是AfterSuite"); } }
運行結果:
RemoteTestNG starting
我是BeforeSuite
我是BeforeTest
我是BeforeClass
我是beforeMethod
執行case1
我是afterMethod
我是beforeMethod
執行case2
我是afterMethod
我是AfterClass
我是AfterTest
PASSED: testcase1
PASSED: testcase2
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
我是AfterSuite
我們可以看到:
-
首先所有beforeSuite()方法只執行一次。
-
最后,afterSuite的()方法只執行一次。
-
即使方法 beforeTest(), beforeClass(), afterClass() 和afterTest() 方法只執行一次。
-
beforeMethod()方法執行每個測試用例,但在此之前執行的測試用例。
-
afterMethod()方法執行每個測試用例,但測試用例執行后。