[使用TestNG时,如果多个测试类继承了一个包含@BeforeTest方法的类,则在测试用例中调用每个类时,它将只运行一次还是每次运行?
当我运行以下代码时,“执行测试前”文本仅打印一次。尽管两个测试类都继承了此方法。
public class masterclass
{
@BeforeTest
public void show()
{
sout("BEFORE TEST EXECUTED")
}
}
测试类别1:
public class TestClass1 extends masterclass
{
@Test
public void testA1() { }
}
测试类别2:
public class TestClass2 extends masterclass
{
@Test
public void testB1() {}
}
测试用例的XML:
<suite name="testSuite">
<test name="MytestCase" >
<classes>
<class name="com.ui.test.TestClass1" />
<class name="com.ui.test.TestClass2" />
</classes>
</test>
</suite>
根据您的情况,@BeforeTest
将运行一次。它将看到Testng.xml
,并且将在<test>
标记下的所有测试用例之前运行。
Master Test Class:
public class MasterClass {
@BeforeTest
public void show()
{
System.out.println("BEFORE TEST EXECUTED");
}
}
Test Class-1:
public class TestClass1 extends MasterClass{
@Test
public void test()
{
System.out.println("Priority 0 (Default in Class 1)");
}
}
Test Class-2:
public class TestClass2 extends MasterClass{
@Test(priority = 0)
public void testin_LearningTestNGTest2_Class()
{
System.out.println("Priority 0 (Class 2)");
}
}
TestNG.xml:
<suite name="testSuite">
<test name="MytestCase">
<classes>
<class name="com.ui.test.TestClass1" />
<class name="com.ui.test.TestClass2" />
</classes>
</test>
</suite>
输出:
BEFORE TEST EXECUTED
Priority 0 (Default in Class 1)
Priority 0 (Class 2)
希望它会帮助您。