合并 surefire JUnit 报告
Merging surefire JUnit reports
我有一个 Java 项目,它由大量的 Maven 模块和大量 unit/integration 测试组成。该项目配置为通过 surefire 插件创建测试报告。现在这个插件基本上会为每个测试 class 创建一个 XML-report 并计划每天 运行 一次并在 Jenkins 上执行。
我想做的是,将那些 XML 报告发送到测试管理系统 (XRAY),以便使它们更加可见和易于管理。我(天真的)方法是在 Jenkins 上添加一个 post 构建脚本,然后通过 curl 将这些报告发送到测试管理 REST-API。 API 提供了一种一次发送一个报告文件的方法。该报告文件可以是单个文件,也可以是嵌套文件,即我基本上可以发送以下两个文件并且它有效:
单个报告
<testsuite>
...
</testsuite>
汇总报告
<testsuites>
<testsuite ... />
<testsuite ... />
</testsuites>
REST-API 可以处理两者,即 IBM JUnit schema and the standard surefire schema
现在进入问题;我显然想将这些报告合并为一个,以避免向 REST-API 发出十亿次请求。但是我似乎无法找到一种自动化的方式。到目前为止我尝试过的是
- 使用 surefire plugin 合并 XML 报告,但似乎不存在合适的选项
- 将测试组织到 (JUnit) 测试套件中,但输出仍然是每个测试的 xml 报告
- 正在寻找解决此问题的替代方案 plugins/tools,运气不佳
我能想到的唯一其他方法是自己编写 "merge script",可能使用某种 XSLT 转换。但我宁愿不。非常感谢任何帮助,谢谢!
解决方案是为此使用外部实用程序,因为 surefire 似乎不支持它。
我已经成功使用junit-merge utility, which is an NPM package, as you can see for example in this tutorial。
用法非常简单;您只需要指定包含多个基于 JUnit XML 的报告的输出文件和输入文件夹。
junit-merge -o results.xml -d target/surefire-reports/
我有一个 Java 项目,它由大量的 Maven 模块和大量 unit/integration 测试组成。该项目配置为通过 surefire 插件创建测试报告。现在这个插件基本上会为每个测试 class 创建一个 XML-report 并计划每天 运行 一次并在 Jenkins 上执行。
我想做的是,将那些 XML 报告发送到测试管理系统 (XRAY),以便使它们更加可见和易于管理。我(天真的)方法是在 Jenkins 上添加一个 post 构建脚本,然后通过 curl 将这些报告发送到测试管理 REST-API。 API 提供了一种一次发送一个报告文件的方法。该报告文件可以是单个文件,也可以是嵌套文件,即我基本上可以发送以下两个文件并且它有效:
单个报告
<testsuite>
...
</testsuite>
汇总报告
<testsuites>
<testsuite ... />
<testsuite ... />
</testsuites>
REST-API 可以处理两者,即 IBM JUnit schema and the standard surefire schema
现在进入问题;我显然想将这些报告合并为一个,以避免向 REST-API 发出十亿次请求。但是我似乎无法找到一种自动化的方式。到目前为止我尝试过的是
- 使用 surefire plugin 合并 XML 报告,但似乎不存在合适的选项
- 将测试组织到 (JUnit) 测试套件中,但输出仍然是每个测试的 xml 报告
- 正在寻找解决此问题的替代方案 plugins/tools,运气不佳
我能想到的唯一其他方法是自己编写 "merge script",可能使用某种 XSLT 转换。但我宁愿不。非常感谢任何帮助,谢谢!
解决方案是为此使用外部实用程序,因为 surefire 似乎不支持它。 我已经成功使用junit-merge utility, which is an NPM package, as you can see for example in this tutorial。 用法非常简单;您只需要指定包含多个基于 JUnit XML 的报告的输出文件和输入文件夹。
junit-merge -o results.xml -d target/surefire-reports/