TestNG常用注解解释

注解含义表

注解名称 含义
BeforeSuite 该方法会运行在该测试集所有其他测试前面
AfterSuite 该方法会运行在测试集里所有其他测试后面
BeforeTest 该方法会运行在本类内部test标注的方法前面
AfterTest 该方法会运行在本类内部test标注的方法后面
BeforeGroups 该方法会运行在测试组之前。这个方法会在这个组里的第一个方法被调用之前执行
AfterGroups 该方法会运行在测试组之后。这个方法会在这个组里的最后一个方法被调用之后执行
BeforeClass 该方法会当前类的第一个测试之前执行
AfterClass 该方法会在当前类的所有测试执行完之后执行
BeforeMethod 该方法在每一个测试方法执行之前都会调用
AfterMethod 该方法在每一个测试方法执行之后都会调用

注解方法的执行顺序

TestNG常用注解解释_第1张图片

关于Suite,Test,Class,Method的理解

Suite是在TestNG的xml中定义的,可以包含好多个Test,Test也是在TestNG的xml中定义的,可以包含好多个class。class是我们的自动化Java类,可以包含多个Method。

下面是一个包含Suite,Test,Class,Method的例子

测试程序文件
package first;
import org.testng.annotations.*;

class TestOrder {
    @BeforeSuite
    public void bs(){
        System.out.println("----before suite----");
    }
    @BeforeTest
    public void bt(){
        System.out.println("----before test----");
    }
    @BeforeClass
    public void bc(){
        System.out.println("----before class----");
    }
    @BeforeMethod
    public void bm(){
        System.out.println("----before method----");
    }
    @Test
    public void test1(){
        System.out.println("----in test1----");
    }
    @Test
    public void test2(){
        System.out.println("----in test2----");
    }
    @AfterMethod
    public void am(){
        System.out.println("----after method----");
    }
    @AfterClass
    public void ac(){
        System.out.println("----after class----");
    }
    @AfterTest
    public void at(){
        System.out.println("----after test----");
    }
    @AfterSuite
    public void as(){
        System.out.println("----after suite----");
    }
}
testng.xml


<suite name="Suite">
    <test name="Test1">
        <classes>
            <class name="first.TestOrder" />
        classes>
    test>
    <test name="Test2">
        <classes>
            <class name="first.TestOrder" />
        classes>
    test>
suite>

运行结果如下:

[TestNG] Running:
  D:\workspace\FirstPro\testng.xml

----before suite----
----before test----
----before class----
----before method----
----in test1----
----after method----
----before method----
----in test2----
----after method----
----after class----
----after test----
----before test----
----before class----
----before method----
----in test1----
----after method----
----before method----
----in test2----
----after method----
----after class----
----after test----
----after suite----

===============================================
Suite
Total tests run: 4, Failures: 0, Skips: 0
===============================================

从上面的执行结果就可以看出来测试程序的逻辑结构是这样的:
1.测试程序最外层是Suite,在执行Suite之前执行BeforeSuite,执行之后执行AfterSuite
2.每个Suite有多个Test组成,在每个Test执行之前执行BeforeTest,执行之后执行AfterTest
3.每个Test由多个Class组成,在每个Class执行前执行BeforeClass,执行之后执行AfterClass
4.每个Class由多个Method组成,在每个Method执行前执行BeforeMethod,执行之后执行AfterMethod

你可能感兴趣的:(功能测试)