有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Eclipse中带有TestNG插件的@BeforeSuite和@AfterSuite的java问题

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

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


共 (1) 个答案

  1. # 1 楼答案

    最好的方法是实现一个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>
    

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