Java Eclipse中带有TestNG插件的@BeforeSuite和@AfterSuite出现问题

Java Eclipse中带有TestNG插件的@BeforeSuite和@AfterSuite出现问题,java,testng,Java,Testng,我有几套套房,像套房1、套房2、套房3等等。我还有一个名为CommonSuite的通用套件,它有@BeforeSuite和@AfterSuite方法。我有一个testng.xml,它配置了所有套件,我正在使用maven failsafe插件来运行测试。一切正常 现在我的问题是,如果我想在eclipse中使用TestNG插件运行/调试Suite1,那么如何确保我的CommonSuite也包含在Suite1中?我知道的一个肮脏的方式是,我可以注释我不想在testng.xml中运行的所有套件,只保留C

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


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

嗨,最好的方法是为应用程序实现listner类实现ISuiteListener

基本类如下所示

    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中启动侦听器,您可以添加以下内容,请记住使用可删除的默认侦听器设置

<!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>

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

看看-实现相同的ISuiteListener,只是在测试类上方使用TestNG@Annotation。