You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins展示历史测试结果及合并多构建XML报告方案咨询

Jenkins测试结果展示相关问题解答

1. 如何在Jenkins中不执行测试用例,直接通过results.xml文件展示测试结果?

其实操作起来很简单,核心就是让Jenkins直接读取你已有的测试结果XML文件,完全不需要触发测试执行流程。具体步骤如下:

  • 确保文件在工作区:先把你的results.xml(或者TestNG格式的testng-results.xml)放到当前Jenkins任务的工作区内。你可以通过构建步骤里的copy(Windows)/cp(Linux)命令复制文件,也可以用Copy Artifact插件从其他构建任务中拉取目标文件。
  • 配置JUnit插件:
    • 如果你用的是Freestyle任务:在任务配置的「构建后操作」里,添加「Publish JUnit test result report」,然后在「Test report XMLs」中填写XML文件的路径,比如**/results.xml(匹配所有子目录下的该文件)。
    • 如果你用的是Pipeline任务:在Jenkinsfile里添加junit指令即可,示例代码如下:
      junit '**/results.xml'
      
  • 运行构建:保存配置后触发构建,Jenkins会直接读取这个XML文件生成标准测试报告,全程不需要执行任何测试用例。

2. 合并多个XML测试结果+解决JUnit插件报错

合并多个XML的可用方案

想要合并不同构建的XML测试结果生成统一报告,有两种实用方式可选:

  • Test Results Aggregator Plugin:这个插件就是为聚合测试结果而生的——它可以汇总同一个任务的多批次构建、或者不同任务的测试结果,直接生成合并后的统一报告。配置时只需在「构建后操作」里添加「Aggregate Test Results」,再选择要聚合的构建来源即可。
  • 手动合并XML后发布:如果不想安装新插件,可以先把多个XML文件合并为一个:
    • 用Ant的junitreport任务,它支持将多个JUnit格式的XML合并成一份汇总XML;
    • 写个简单的Python脚本,遍历所有目标XML文件,把测试用例节点合并到同一个根节点下;
    • 合并完成后,再用JUnit插件发布这份合并后的XML文件即可。

解决"Test reports were found but none of them are new"报错

这个报错的本质是Jenkins判定你的XML文件不是当前构建生成的(它会检查文件的修改时间),解决方法非常直接:

  • 更新文件修改时间:在发布测试报告之前,添加一个构建步骤,把XML文件的修改时间更新为当前时间:
    • Windows系统:执行命令 copy /b testng-results.xml +,,(这个命令不会修改文件内容,仅更新修改时间);
    • Linux/macOS系统:执行命令 touch testng-results.xml;
  • 复制文件后立即更新时间:如果你的XML文件是从其他构建复制过来的,务必在复制完成后立刻执行上述时间更新命令,让Jenkins认为这是当前构建产出的文件;
  • 额外配置检查:在JUnit插件的配置里,确认没有勾选「Fail the build if no test results are found」(如果文件确实存在,这个选项可能会因为文件时间问题误判),不过核心解决手段还是更新文件修改时间。

内容的提问来源于stack exchange,提问作者ktgirish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:24:29