我有一个Java项目,其中包含大量的maven模块和大量的单元/集成测试。该项目配置为通过 Surefire 插件创建测试报告。现在这个插件基本上为每个测试类创建一个 XML 报告,并计划每天运行一次并在 Jenkins 上执行。
我想要做的是将这些 XML 报告发送到测试管理系统 (XRAY),以使它们更加可见和易于管理。我的(天真的)方法是在 Jenkins 上添加一个构建后脚本,然后通过curl 将这些报告发送到测试管理 REST-API。此 API 提供了一种一次发送单个报告文件的方法。该报告文件可以是单个或嵌套的,即我基本上可以发送以下两个文件并且它可以工作:
单一报告
<testsuite>
...
</testsuite>
汇总报告
<testsuites>
<testsuite ... />
<testsuite ... />
</testsuites>
REST-API 可以处理这两种情况,即 IBM JUnit 模式 和标准 surefire 模式
现在来解决问题;我显然想将这些报告合并为一个,以避免向 REST-API 发出十亿次请求。但是,我似乎无法找到自动化的方法。到目前为止我尝试过的是
我能想到的唯一其他方法是自己编写一个“合并脚本”,可能使用某种 XSLT 转换。但我宁愿不。非常感谢任何帮助,谢谢!
解决方案是使用外部实用程序,因为 Surefire 似乎不支持它。 我已经成功使用了 junit-merge 实用程序,它是一个 NPM 包,如您在 本教程 中看到的示例。 用法非常简单;您只需要指定输出文件和包含多个基于 JUnit XML 的报告的输入文件夹。
junit-merge -o results.xml -d target/surefire-reports/