有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将TestNg报告上载到S3

我目前正在研究在测试套件执行后,基于testng xml中的参数将testng报告上载到AmazonS3的能力。考虑下面的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目录),Java项目将把默认测试输出目录(当前为/build/reports/tests)中的所有文件上载到s3

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

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

非常感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

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