如何将XCODE生成的XCTest JUnit测试报告带截图集成到Azure Pipelines?
XCTest JUnit报告集成Azure Pipelines失败截图关联方案
核心原理
原生XCTest生成的JUnit报告默认不包含附件标识,Azure Pipelines测试模块需要显式匹配测试用例和对应截图文件才能实现关联展示,整个流程分为测试侧适配、报告改造、流水线配置三个环节。
具体实现步骤
- 测试侧配置失败自动截图
在XCTest的公共基类重写tearDown方法,判断当前用例执行状态为失败时,调用系统截图接口生成截图,统一按{测试类名}_{测试方法名}_{时间戳}.png的规则命名,保存到项目下固定目录如./failure_screenshots。 - 改造JUnit报告增加附件关联标识
原生xcodebuild输出的JUnit报告没有附件字段,可以用两种方式改造:- 用xcpretty自定义格式化规则,在生成JUnit报告时自动给失败用例添加
<attachment>子节点,值为对应截图的文件名 - 用Python/Shell脚本批量修改已生成的junit.xml,给失败的
<testcase>节点插入<attachment>子节点,内容匹配对应截图文件名
改造后的testcase节点示例:
UserLoginTest_test_password_error_scene_1699876543.png - 用xcpretty自定义格式化规则,在生成JUnit报告时自动给失败用例添加
- 配置Azure Pipelines任务关联附件
修改流水线yaml配置,在PublishTestResults@2任务中增加attachmentsFolder参数,指向测试截图存放的目录,Azure会自动扫描该目录下的文件,和JUnit报告中<attachment>节点的文件名匹配,关联到对应测试用例的详情页。
配置片段示例:
如果不想改造JUnit报告,也可以直接把整个截图目录作为构建产物上传,在测试用例的失败日志中输出对应截图的文件名,测试人员可以直接在构建产物中搜索文件名找到对应截图。- task: PublishTestResults@2 inputs: testResultsFormat: 'JUnit' testResultsFiles: '**/junit.xml' attachmentsFolder: '$(Build.SourcesDirectory)/failure_screenshots' failTaskOnFailedTests: true
验证方法
流水线执行完成后,进入测试结果页,点击任意失败的测试用例,在附件标签栏即可看到关联的截图,支持直接在线预览。
内容的提问来源于stack exchange,提问作者Janina X
相关产品推荐
相关产品推荐

