我有几个套房,如Suite1,Suite2,Suite3等。我还有一个名为CommonSuite的通用套件,它有@BeforeSuite
和@AfterSuite
方法。我有一个配置了所有套件的testng.xml,我使用maven failsafe插件来运行测试。一切正常。
现在我的问题是,如果我想在eclipse中使用TestNG插件运行/调试说只是 Suite1,我如何确保我的CommonSuite也包含在Suite1中?我知道的一种肮脏的方式是,我可以评论我不想在 testng.xml 中运行的所有套件,只保留CommonSuite和Suite1,然后运行/ debug作为TestNG套件。虽然这似乎不是正确的做法。还有其他更好的方法来实现这个目标吗?
答案 0 :(得分:1)
您最好的方法是为套装实现一个列表工具实现ISuiteListener
基本的clas将如下所示
public class PlatformSuite implements ISuiteListener {
/**
* This method is invoked before the SuiteRunner starts.
*/
public synchronized void onStart(ISuite suite) {
/*Your before suite implementation here*/
}
/**
* This method is invoked after the SuiteRunner has run all
* the test suites.
*/
public void onFinish(ISuite suite) {
/*Your after suite implementation here*/
}
}}
对于eclipse插件,您可以将testng xmal指定为“模板XML文件”
要在testng.xml中启动监听器,您可以添加以下内容,请记住ass desable默认监听器设置
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="DssTestSuite" parallel="false">
<parameter name="useDefaultListeners" value="false"/>
<listeners>
<listener class-name="org.someonr.something.core.PlatformSuite"/>
</listeners>
<test name="sample Test" parallel="false" verbose="2">
<packages>
</packages>
<classes>
</classes>
</test>
此调用将在每个测试套件之前和每个测试套件之后调用