如何将Kover报告上传至CircleCI「Test」标签页及报错排查
CircleCI + Kover 配置错误排查
第一个错误:when: always 位置写错导致bash报错
- 原因:你把CircleCI的步骤属性
when: always写到了command的bash脚本里,bash会把它当成命令执行,所以触发when:: command not found错误。when: always是用来标记步骤无论前面是否失败都要执行的,必须和name、command同级,属于run节点的属性,不是脚本内容。 - 修复后的正确配置片段:
- run: name: Save test results command: | mkdir -p ~/test-results/junit/ # 修正正则的转义,避免匹配失败 find . -type f -regex ".*/build/reports/kover/xml/.*\.xml" -exec cp {} ~/test-results/junit/ \; when: always
第二个错误:Kover XML 格式不兼容store_test_results
- 原因:CircleCI的
store_test_results只支持JUnit/XUnit标准格式的测试结果XML,但Kover生成的XML是代码覆盖率报告,结构和JUnit完全不同,所以解析时会报invalid top level element错误。 - 解决方案:
store_test_results应该用来上传真正的JUnit测试结果(一般在各个模块的build/test-results目录下),而不是Kover的覆盖率文件。- Kover的覆盖率报告只需要用
store_artifacts保存即可,不需要走测试结果上传流程。
- 调整后的配置示例:
# 替换原来的保存测试结果步骤,改为收集JUnit测试报告 - run: name: Save JUnit test results command: | mkdir -p ~/test-results/junit/ find . -type f -name "*.xml" -path "*/build/test-results/*" -exec cp {} ~/test-results/junit/ \; when: always - store_test_results: path: ~/test-results # Kover的HTML报告正常用artifacts存储 - store_artifacts: path: shared/build/reports/kover/html
内容的提问来源于stack exchange,提问作者Android Killer
相关产品推荐
相关产品推荐

