@BeforeSuite和@AfterSuite与Eclipse中的TestNG插件一起出现问题

时间:2012-10-24 16:02:24

标签: java testng

我有几个套房,如Suite1,Suite2,Suite3等。我还有一个名为CommonSuite的通用套件,它有@BeforeSuite@AfterSuite方法。我有一个配置了所有套件的testng.xml,我使用maven failsafe插件来运行测试。一切正常。

现在我的问题是,如果我想在eclipse中使用TestNG插件运行/调试说只是 Suite1,我如何确保我的CommonSuite也包含在Suite1中?我知道的一种肮脏的方式是,我可以评论我不想在 testng.xml 中运行的所有套件,只保留CommonSuite和Suite1,然后运行/ debug作为TestNG套件。虽然这似乎不是正确的做法。还有其他更好的方法来实现这个目标吗?

1 个答案:

答案 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>

此调用将在每个测试套件之前和每个测试套件之后调用