Azure DevOps流水线reportgenerator@4报错:报告文件不存在问题排查
核心原因
1. runTestsWithJacoco任务被跳过,未生成Jacoco报告文件
JacocoReport类型的Gradle任务默认会校验executionData指定的.exec覆盖率数据文件是否存在,如果文件不存在,任务会自动标记为SKIPPED,不会生成后续的xml/html报告。导致.exec文件不存在的常见原因:
- 依赖的
testDebugUnitTest任务执行失败,没有生成.exec原始数据 - 配置的
executionData路径和Android Gradle 7.0.1实际生成的.exec文件路径不匹配:Android Gradle 7.0+默认会把单元测试的.exec文件输出到$buildDir/outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec,而非你配置的jacoco/testDebugUnitTest.exec
2. 报告生成任务的输入路径配置错误
就算runTestsWithJacoco任务成功执行,你reportgenerator@4任务中指定的reports路径也和实际生成的报告路径不一致:
你的Jacoco任务名为runTestsWithJacoco,默认生成的xml报告路径为app/build/reports/jacoco/runTestsWithJacoco/runTestsWithJacoco.xml,你配置的是错误的文件名runUnitTestsWithCoverage.xml,自然找不到目标文件。
其他潜在问题
reportgenerator@4任务中配置的sourcedirs为service/src/main/java,但你的源码实际在app模块的src/main/java下,路径不匹配会导致后续报告展示异常- 项目级build.gradle中定义的
jacoco_version扩展属性,在app模块中使用前如果读取失败,会导致Jacoco插件初始化异常,也可能引发任务跳过
修复建议
- 先修正
runTestsWithJacoco任务中的executionData路径为Android Gradle 7.0+的默认路径:
executionData.from(fileTree(dir: buildDir, includes: [ "outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec" ]))
- 修正
reportgenerator@4任务的reports参数为正确路径:
reports: 'app/build/reports/jacoco/runTestsWithJacoco/runTestsWithJacoco.xml'
- 可在Gradle任务中添加日志打印确认.exec文件是否存在,排查任务跳过的根因
- 同步修正
sourcedirs为app/src/main/java
内容的提问来源于stack exchange,提问作者YoSoy
相关产品推荐
相关产品推荐

