【问题标题】:How to generate TestNg output results before running @AfterSuite annotation如何在运行@AfterSuite注解之前生成TestNg输出结果
【发布时间】:2018-12-21 01:00:47
【问题描述】:

在我的@AfterSuite 注释中,我试图生成以testng-results.xml 作为输入的Jasper 报告。但是,这里的问题是,testng-results.xml 只有在执行 @AfterSuite 注释后才会生成。我想知道是否可以在运行@AfterSuite注解之前生成测试结果。感谢您提供任何帮助/建议。

我知道有一些与这个问题相关的答案here。但是我没有找到确切的方法。

【问题讨论】:

    标签: testng


    【解决方案1】:

    文件testng-results.xml 由TestNG 的内置报告器org.testng.reporters.XMLReporter 生成。仅在报告阶段(即,仅在所有套件都运行完成之后)才会启动此报告器。

    所以在@AfterSuite注解的方法运行完成之前是不可能生成这个文件的。

    您可以通过侦听器org.testng.IExecutionListener 在其onExecutionFinish() 方法中构建构建基于jasper 的报告的逻辑。

    在生成所有报告的报告阶段之后,将调用此侦听器。

    另一种选择是您执行以下操作:

    1. 创建一个扩展 org.testng.reporters.XMLReporter 的新报告器
    2. 将 TestNG 配置为不运行默认报告。例如,如果您使用 Maven 作为构建工具并使用了surefire-plugin,那么您可以通过添加以下内容来配置surefire-plugin 以禁用默认报告
    <properties>
        <property>
            <name>usedefaultlisteners</name>
            <value>false</value>
        </property>
    </properties>
    
    1. 通过以下方式连接您在 (1) 中创建的侦听器:
      1. @Listeners注解(或)
      2. &lt;listeners&gt;标签(或)
      3. 使用服务加载器 [参见here]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      相关资源
      最近更新 更多