注解含义表
注解名称 | 含义 |
---|---|
BeforeSuite | 该方法会运行在该测试集所有其他测试前面 |
AfterSuite | 该方法会运行在测试集里所有其他测试后面 |
BeforeTest | 该方法会运行在本类内部test标注的方法前面 |
AfterTest | 该方法会运行在本类内部test标注的方法后面 |
BeforeGroups | 该方法会运行在测试组之前。这个方法会在这个组里的第一个方法被调用之前执行 |
AfterGroups | 该方法会运行在测试组之后。这个方法会在这个组里的最后一个方法被调用之后执行 |
BeforeClass | 该方法会当前类的第一个测试之前执行 |
AfterClass | 该方法会在当前类的所有测试执行完之后执行 |
BeforeMethod | 该方法在每一个测试方法执行之前都会调用 |
AfterMethod | 该方法在每一个测试方法执行之后都会调用 |
注解方法的执行顺序
关于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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<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