2012-10-24 83 views
0

我有几个套件,如Suite1,Suite2,Suite3等。我也有一个名为CommonSuite的公共套件,它有@BeforeSuite@AfterSuite方法。我有一个testng.xml配置了所有的套件,我使用maven failsafe插件来运行测试。一切正常。问题与@BeforeSuite和@AfterSuite与TestNG插件在Eclipse中

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

做到这一点

回答

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*/ 
    } 

}} 

插件,您可以指定TestNG的Xmal位为“模板XML文件“

要发起的testng.xml监听器可以添加以下,记得屁股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> 

该调用每个测试套件在每次测试套件

+0

感谢@dharshana后调用。我认为这是有道理的。 – nilesh

+0

查看http://stackoverflow.com/a/36980210/658497 - 实现相同的ISuiteListener,只需使用Test类上面的TestNG @Annotation即可。 –