合并可靠的 JUnit 报告

问题描述 投票:0回答:1

我有一个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 发出十亿次请求。但是,我似乎无法找到自动化的方法。到目前为止我尝试过的是

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

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

java maven jenkins junit jira-xray
1个回答
1
投票

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

junit-merge  -o results.xml -d target/surefire-reports/
© www.soinside.com 2019 - 2024. All rights reserved.