【发布时间】: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 实际生成报告文件之后执行?
非常感谢任何帮助!
【问题讨论】: