3

我有一个 Java 项目,其中包含大量的 Maven 模块和大量的单元/集成测试。该项目配置为通过surefire插件创建测试报告。现在这个插件基本上为每个测试类创建一个 XML 报告,并计划每天运行一次并在 Jenkins 上执行。

我想要做的是,将这些 XML 报告发送到测试管理系统 (XRAY),以使它们更加可见和易于管理。我的(天真的)方法是在 Jenkins 上添加一个后期构建脚本,然后通过 curl 将这些报告发送到测试管理 REST-API。此 API 提供了一次发送单个报告文件的方法。这个报告文件可以是单一的也可以是嵌套的,即我基本上可以发送以下两个并且它可以工作:

单一报告

  <testsuite>
  ...
  </testsuite>

汇总报告

  <testsuites>
    <testsuite ... />
    <testsuite ... />
  </testsuites>

REST-API 可以处理两者,即IBM JUnit 模式和标准的万无一失的模式

现在问题来了;我显然想将这些报告合并为一个,以避免向 REST-API 发出十亿个请求。但是我似乎无法找到一种自动化的方式。到目前为止我尝试过的是

  • 玩弄surefire插件合并XML报告,但似乎不存在合适的选项
  • 将测试组织到(JUnit)测试套件中,但输出仍然是每个测试的 xml 报告
  • 寻找解决这个问题的替代插件/工具,没有运气

我能想到的唯一其他方法是自己编写一个“合并脚本”,可能使用某种 XSLT 转换。但我宁愿不要。非常感谢任何帮助,谢谢!

4

1 回答 1

1

解决方案是为此使用外部实用程序,因为 surefire 似乎不支持它。我已经成功使用了junit-merge 实用程序,它是一个 NPM 包,您可以在本教程中看到示例。用法非常简单;您只需要指定包含多个基于 JUnit XML 的报告的输出文件和输入文件夹。

junit-merge  -o results.xml -d target/surefire-reports/
于 2020-08-11T09:58:10.323 回答