如何在运行@AfterSuite批注之前生成TestNg输出结果

时间:2018-12-20 06:10:57

标签: testng

在我的@AfterSuite批注中,我试图生成以testng-results.xml作为输入的Jasper报告。但是,这里的问题是,testng-results.xml仅在执行@AfterSuite批注之后生成。我想知道是否有可能在运行@AfterSuite注释之前生成测试结果。任何帮助/建议表示赞赏。

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

1 个答案:

答案 0 :(得分: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. <listeners>标签(或)
    3. 使用服务加载程序[请参见here]
相关问题