Azure DevOps Pipeline发布Angular单元测试结果找不到对应XML文件如何解决
排查解决步骤
1. 修复路径不匹配问题
你当前配置的路径存在层级差:
- karma.conf.js 中
junitReporter配置的输出路径是testresults/junit/unit-test-result.xml - Azure DevOps 发布测试结果任务的匹配规则是
**/testresults/unit-test-result.xml,少了一级junit目录,所以匹配不到文件。
两种修正方案二选一即可:
- 方案一:修改发布测试结果任务的「测试结果文件」匹配规则为
**/testresults/junit/unit-test-result.xml,也可以直接写更宽松的**/unit-test-result.xml - 方案二:修改karma.conf.js中的junitReporter配置,把输出目录改成和Pipeline匹配的路径:
junitReporter: { outputDir: 'testresults', outputFile: 'unit-test-result.xml', useBrowserName: false, },
2. 修正测试运行配置
你当前karma配置中singleRun为false,该配置会让测试跑完后持续监听代码变更、不退出进程,Pipeline执行时会卡在此步骤,不会生成最终的测试结果文件,需要改成:
singleRun: true,
修改后可以先在本地执行测试命令ng test --no-watch,确认项目目录下确实生成了对应路径的xml文件,再推送到Pipeline运行。
3. 核对Pipeline任务顺序
确认Publish Test Results任务的执行顺序在测试执行任务之后,若测试任务还没运行就执行结果发布,自然找不到文件。
4. 路径兜底排查
如果修改后还是有告警,可以在测试执行任务后加一个命令行任务,Linux代理执行ls -R、Windows代理执行dir /s,打印出当前工作目录的完整文件结构,确认xml文件实际生成的路径,再对应调整匹配规则即可。
内容的提问来源于stack exchange,提问作者Rawan Aldaej
相关产品推荐
相关产品推荐

