【问题标题】:Upload TestNg reports to S3将 TestNg 报告上传到 S3
【发布时间】:2015-10-02 18:32:11
【问题描述】:

我目前正在研究根据 testng xml 中的参数在测试套件执行后将 testng 报告上传到 Amazon S3 的能力。考虑以下 testng xml:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Base Framework Unit Test Suite" verbose="1" >
    <parameter name="upload-test-reports" value="true" />
    <parameter name="aws-provider-type" value="profile" />
    <parameter name="aws-s3-bucket" value="qa-reports" />
    <parameter name="target-reports-directory" value="TestProduct/Sprint1" />

    <test name="Test-base-built Unit Tests" >
        <parameter name="test-run-type" value="local" />
        <parameter name="name" value="Test-base-built Unit Tests" />
        <parameter name="browser" value="htmlunitwithjs" />
        <groups>
            <run>
                <include name="unittest" />
            </run>
        </groups>
        <classes>
            <class name="unittest.TestBaseBuilt_Test" />
        </classes>
    </test>

</suite>

给定前四个参数(upload-test-reports、aws-provider-type、aws-s3-bucket 和 target-reports-directory),Java 项目将上传默认测试输出目录中的所有文件(其中当前是 /build/reports/tests) 到 S3。

现在,上传部分对我来说工作正常。问题是它总是上传之前测试运行的文件。我尝试创建一个扩展 TestListenerAdapter 的 testng 侦听器并将上传逻辑放在 onFinish 方法中。那没有用;它在当前运行的报告生成之前上传。我还尝试编写一个自定义的 testng 报告器来实现 IReporter 并将上传逻辑放在 generateReport 方法中。结果相同;它在当前运行的报告生成之前上传。

那么,有没有 testng 专家知道我可以将文件上传逻辑放在哪里,以便在 testng 实际生成报告文件之后执行?

非常感谢任何帮助!

【问题讨论】:

    标签: java testng


    【解决方案1】:

    这个问题的解决方案毕竟是一个 TestNG 监听器。我实现了 IExecutionListener 并将我的上传逻辑放在 onExecutionFinish 方法中。此方法在 TestNG 生成报告之后运行,因此它上传的是当前测试运行的报告,而不是之前的报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多