Java自動化測試框架(TestNG)——基本註解與實例

Java自動化測試框架(TestNG)——基本註解與實例

TestNG是開源的Java自動化測試框架,框架的設計靈感來源於JUnit 和 NUnit。其消除了大部分的舊框架的限制,使測試開發人員能夠編寫更加靈活和強大的測試。

註解 Annotation 是從JDK1.5 開始引入到Java語言中,TestNG 借鑑了Java註解來定義測試。


TestNG Maven依賴

使用Maven作為項目管理工具,可以對 Java 項目進行構建、依賴管理。我們需要在pom.xml中添加 testng 依賴,如下:

<code>
     
    
        org.testng
        testng
        7.0.0-beta1
        test
    
/<code>


一個簡單的示例

如下,我們創建 baseDemoOtherTest 測試類,通過@Test註解來實現。

<code>// baseDemoOtherTest.java
package testng.base.demo;
import org.testng.annotations.Test;

public class baseDemoOtherTest {
    @Test
    public void testOtherDemo1() {
        System.out.println("            運行 testOtherDemo1()測試方法");
    }

    @Test
    public void testOtherDemo2() {
        System.out.println("            運行 testOtherDemo2()測試方法");
    }
}/<code>


TestNG常用註解及使用

<code>@Test            將類或方法標記為測試的一部分。
@BeforeSuite     在該套件的所有測試之前運行註解方法,僅運行一次(套件測試是一起運行的多個測試類)。
@AfterSuite      在該套件的所有測試之後運行註解方法,僅運行一次(套件測試是一起運行的多個測試類)。
@BeforeClass     在調用當前類的第一個測試方法之前運行註解方法,註解方法僅運行一次。
@AfterClass      在調用當前類的所有測試方法之後運行註解方法,註解方法僅運行一次。
@BeforeTest      在屬於標籤內的類的所有測試方法之前運行註解方法。
@AfterTest       在屬於標籤內的類的所有測試方法之後運行註解方法。
@BeforeMethod    在每個測試方法之前運行註解方法。
@AfterMethod     在每個測試方法之後運行註解方法。
@BeforeGroups    在配置的分組中第一個方法運行之前運行註解方法。
@AfterGroups     在配置的分組中所有的方法運行之後運行註解方法
    /<code>

增加一個測試類 baseDemoTest

<code>package testng.base.demo;
import org.testng.annotations.*;

public class baseDemoTest {
    @BeforeSuite
    public void beforeSuite() {
        System.out.println("@BeforeSuite:測試套件(當前xml中標籤)之前運行@BeforeSuite註釋方法");
    }
  
    @AfterSuite
    public void afterSuite() {
        System.out.println("@AfterSuite:測試套件(當前xml中標籤)之後運行@AfterSuite註釋方法");
    }
  
    @BeforeTest
    public void beforeTest() {
        System.out.println("    @BeforeTest:測試用例(當前xml中標籤)之前運行@BeforeTest註釋方法");
    }
  
    @AfterTest
    public void afterTest() {
        System.out.println("    @AfterTest:測試用例(當前xml中標籤)之後運行@AfterTest註釋方法");
    }
  
    @BeforeMethod
    public void beforeMethod() {
        S
       ystem.out.println("        @BeforeMethod:當前類每個測試方法(@Test)之前運行@BeforeMethod註釋方法");
    }
    @AfterMethod
    public void AfterMethod() {
        System.out.println("        @AfterMethod:當前類每個測試方法(@Test)之後運行@AfterMethod註釋方法");
    }
    @BeforeGroups(value = {"A"})
    public void beforeGroups() {
        System.out.println("        @BeforeGroups:在A組第一個方法運行之前運行@BeforeGroups註釋方法");
    }
    @AfterGroups(value = {"A"})
    public void afterGroups() {
        System.out.println("        @AfterGroups:在A組最後一個方法運行之後運行@AfterGroups註釋方法");
    }
    @Test
    public void testDemo1() {
        System.out.println("            @Test:運行testDemo1()測試方法");
    }
    @Test(groups = {"A"})
    public void testDemo2() {
        System.out.println("            @Test:運行testDemo2()測試方法,歸屬A組");
    }S
    @Test(groups = {"A"})
    public void testDemo3() {
        System.out.println("            @Test:運行testDemo3()測試方法,歸屬A組");
    }
}/<code> 

在工程目錄中新建一個自定義xml配置文件testng.xml

<code>

 


     
    
        
            
        
    
     

 
/<code>

運行testng.xml 配置測試,結果如下,我們可以非常清晰的看到執行順序。

Java自動化測試框架(TestNG)——基本註解與實例

總結一下執行順序如下:@BeforeSuite->@BeforeTest->@BeforeClass-> {@BeforeMethod->@Test->@AfterMethod} ->@AfterClass->@AfterTest->@AfterSuite。其中{}內的與多少個@Test註解的測試方法,就循環執行多少次。


註解的作用域

我們接下來改造一下第一個demo測試類,如下,我們將其中一個測試方法設置為分組A。

<code>package testng.base.demo;
import org.testng.annotations.Test;

public class baseDemoOtherTest {
    @Test
    public void testOtherDemo1() {
        System.out.println("            運行 testOtherDemo1()測試方法");
    }

    @Test(groups = {"A"})
    public void testOtherDemo2() {
        System.out.println("            運行 testOtherDemo2()測試方法");
    }
}
/<code>

更新下testng.xml配置,如下:

<code>

 

     
    
        
            
            
        
    
     

     
    
        
            
        
    
     

 
                
                /<code>

運行testng.xml 配置測試,從如下結果可以看出,@BeforeGroups、@AfterGroups的作用域是可以跨類的,但類必須是在testng.xml中同一個測試用例(標籤)範圍內;

Java自動化測試框架(TestNG)——基本註解與實例

配置文件xml常用標籤

<code> 

     
     
        
         
             
            
                 
                 
                     
                     
                     
                       
                   
            
        
    
    
     
         
         
            
            
        
    
    
      
        
          
              
                
                 
                 
                   
            
        
     
/<code>


分享到:


相關文章: