java - 将 TestNg 报告上传到 S3

标签 java testng

我目前正在研究在测试套件执行后根据 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 实际生成报告文件后执行?

非常感谢任何帮助!

最佳答案

最终的解决方案是使用 TestNG 监听器。我实现了 IExecutionListener 并将上传逻辑放入 onExecutionFinish 方法中。该方法在 TestNG 生成报告后运行,因此它上传了当前测试运行的报告,而不是之前的报告。

关于java - 将 TestNg 报告上传到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913615/

相关文章:

java - Project Euler 9 解决方案没有给出正确的结果

java - 使用过滤器解析 XML

Maven 故障安全插件不运行 testNG XML 套件

java - 在使用 TestNG 的测试用例失败的情况下重新运行整个类

java - 以编程方式运行 TestNG 需要循环来自动创建多个测试

selenium - TestNG 未发送最新的 emailable-report.html

java SecretKeyFactory 密码哈希无法正常工作

java - XML文件中的eclipse android编程错误: aborting build

java - 从非 void 函数修改对象

java - 如何使用 PowerMock/Mockito 和 TestNG 为最终类的(公共(public))方法编写 _spy_ ?