我有一套测试,其中有一个使用@BeforeSuite注释的setUp方法,该方法在套件之前运行。偶尔我需要单独运行测试或在类中进行所有测试。有没有办法让我的setUp方法在这些之前运行。
我的理解是TestNG创建了一个默认套件,因此我不应该如何运行测试,如果我有一个使用@BeforeSuite注释的方法,它应该在所有测试之前运行。然而,这对我不起作用。它仅在我运行完整套件时运行。
xml套件。如果我从这里进行测试就可以了。 (右键单击,选择运行)
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="OvernightSuite">
<test name="Test Sequential" preserve-order="true" parallel="none">
<classes>
<class name="com.myComp.test.cases.setUpClass" />
<class name="com.com.myComp.test.cases.testClass1" />
<class name="com.com.myComp.test.cases.testClass2" />
</classes>
</test>
</suite>
设置课程
public class setUpClass{
@BeforeSuite
public void setUp() {
populateDataSources();
populateVariables();
}
@Test
public void datasourcesWereSetUpTest() {
boolean result = method.read();
assert(result);
}
}
其中一个测试类。如果我在这里运行,(突出显示,右键单击,选择运行),则不会执行beforeSuite。
public class testClass1{
@Test
public void someTest() {
boolean result = method.read();
assert(result);
}
}
答案 0 :(得分:0)
只要@BeforeSuite
带注释的方法是测试类(其中包含一个或多个@Test
方法的方法)的一部分,它就可以在不需要做任何额外操作的情况下工作。< / p>
但是如果你的@BeforeSuite
方法属于不同的类,那么执行它的唯一方法就是执行以下操作之一:
@BeforeSuite
方法的类以及您的测试类。 (或)org.testng.ISuiteListener
的TestNG侦听器,并将@BeforeSuite
的逻辑移动到onStart()
,然后通过@Listeners
注释(或)连接此侦听器<listeners>
标记(或)通过Service Loader方法。有关详细信息,请参阅我的this博文。答案 1 :(得分:0)
您是否尝试过以下任何选项:
'@BeforeTest'
在&lt;&lt;包含的任何测试方法之前执行设置方法。测试&gt; testng.xml文件中的标记。
'@BeforeMethod'
在任何注释为@Test的测试方法之前执行设置方法。
http://howtesting.blogspot.ie/2012/12/difference-between-beforetest-and.html