BeforeSuite、BeforeTest、BeforeClass、BeforeMethod的理解
@BeforeSuite 带@BeforeSuite注释的方法将在本套件中所有测试运行之前运行。
@BeforeTest @BeforeTest注解的方法将在testNG.xml文件test标签内的所有类方法运行前执行。
@BeforeGroups 被@BeforeGroups注解的方法会在组列表中之前被调用。
@BeforeClass 在调用当前类中的第一个测试方法之前,将运行带@BeforeClass注释的方法。
@BeforeMethod @BeforeMethod注释的方法将在每个测试方法之前运行。
举例:
public class Test1 {
@BeforeClass
public void f_bc() {
System.out.println("Test1.f_bc()");
}
@BeforeMethod
public void f_bd() {
System.out.println("Test1.f_bd()");
}
@Test
public void test_m1() {
System.out.println("Test1.test_m1()");
}
}
public class Test2 {
@Test
public void test_m2() {
System.out.println("Test1.test_m2()");
}
}
public class TestSuite {
@BeforeSuite
public void f_bs() {
System.out.println("Test.f_bs()");
}
@BeforeTest
public void f_bt() {
System.out.println("Test.f_bt()");
}
}
xml运行文件:
<?xml version="1.0" encoding="UTF-16" ?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="test">
<test name="test">
<classes>
<class name="com.courser.testng.suite.Test1"/>
<class name="com.courser.testng.suite.TestSuite"/>
</classes>
</test>
<test name="test1">
<classes>
<class name="com.courser.testng.suite.Test2"/>
<class name="com.courser.testng.suite.TestSuite"/>
</classes>
</test>
</suite>
运行结果如下:
Test.f_bs()
Test.f_bt()
Test1.f_bc()
Test1.f_bd()
Test1.test_m1()
Test.f_bt()
Test1.test_m2()
结论:BeforeSuite 在所用测试运行之前运行,只运行一次
BeforeTest 在testNG.xml文件test标签内的所有类方法运行前执行。有多少个<test></test>标签运行多少次
BeforeClass 只能写在带有测试方法的类中,在所有测试方法运行之前运行。一个类中只运行一次
BeforeMethod 只能写在带有测试方法的类中,在每一个测试方法运行之前运行。一个类中有多少个方法运行多少次
浙公网安备 33010602011771号