TestNG基本注解


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()方法執行每個測試用例,但測試用例執行后。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM