TestNG 如何使用@After注解
一个TestNG类可以有多个@After方法,比如:@AfterTest @AfterSuite @AfterClass @AfterMethod等等。
本文将解释不同TestNG方法的执行顺序。
TestNG由以下@After方法组成,用于支持主要的@Test方法。@After方法的执行顺序应该如下:
<test1>
<AfterMethod>
<AfterClass>
<AfterTest>
<AfterSuite>
关键点在这个订单中是
- 首先,在上面的示例中执行了第一个@test()方法。
-
AfterSuite()方法只执行一次。
-
即使AfterClass()和AfterTest()方法也只会执行一次。
-
AfterMethod()方法对于每个测试用例执行(对于新的@Test每次执行一次),但是在执行测试用例之后执行。
步骤
-
第1步:导入org.testng.annotations.*以使用TestNG。
-
第2步:编写一个注释@test。
-
第3步:为@test注释创建一个名为test1的方法。
-
第4步:重复test2和test3的步骤。
-
第5步:编写不同的注释和它们的相应方法。例如:@AfterClass,@AfterMethod,@AfterSuite
-
第6步:现在根据以下方式创建testNG.xml。
-
第7步:现在在IDE中运行testNG.xml或直接运行testNG类,也可以使用命令行编译和运行。
示例
以下代码展示了不同TestNG方法的顺序:
import org.testng.annotations.*;
import org.testng.annotations.Test;
public class OrderofTestExecutionInTestNG {
// test case 1
@Test
public void testCase1() {
System.out.println("in test case 1");
}
// test case 2
@Test
public void testCase2() {
System.out.println("in test case 2");
}
@AfterMethod
public void afterMethod() {
System.out.println("in afterMethod");
}
@AfterClass
public void afterClass() {
System.out.println("in afterClass");
}
@AfterTest
public void afterTest() {
System.out.println("in afterTest");
}
@AfterSuite
public void afterSuite() {
System.out.println("in afterSuite");
}
}
testng.xml
这是一个配置文件,用于组织和执行TestNG测试用例。
当只需要执行有限的测试而不是整个套件时,它非常方便。
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "OrderofTestExecutionInTestNG"/>
</classes>
</test>
</suite>
输出
in test case 1
in afterMethod
in test case 2
in afterMethod
in afterClass
in afterTest
in afterSuite