升级至AGP 4.2.0后,无法生成Jacoco代码覆盖率报告。

5

Jacoco 代码覆盖率功能在我升级 Android Gradle Plugin4.2.0 后出现了问题,只有应用程序模块的代码覆盖率被生成,对于其他模块则不起作用。有任何解决此问题的想法吗?

2个回答

7

我在升级到4.2.1版本后也遇到了同样的问题。

看起来非插桩单元测试的Jacoco执行数据文件已经被重命名为“jacoco.exec”,并移动到模块的顶层目录中。

在我的JacocoReport gradle任务配置中,以下设置对我有用:

executionData.from = "${project.projectDir}/jacoco.exec"

注意:instrumented测试所生成的执行数据文件没有被重命名或移动。


我没有注意到这一点,我的jacoco.exec似乎仍然在相同的位置(${buildDir}/jacoco/${variantName}UnitTest.exec)。但是我遇到了与OP相同的问题。你是否需要进行其他更改? - Bradleycorn

5

根据Richard惊人的回答,如果您之前使用了这个设置(对于Android中的单元测试和仪器化测试来说是非常标准的),

executionData.from = fileTree(dir: project.buildDir, includes: [
  "jacoco/${testTaskName}.exec",
  "outputs/code_coverage/${variantName}AndroidTest/connected/**/*.ec"
])

您可以切换到这个等价物来使用 AGP 4.2.X。
executionData.from = files([
  "$project.projectDir/jacoco.exec",
  fileTree(dir: project.buildDir, includes: [
    "outputs/code_coverage/${variantName}AndroidTest/connected/**/*.ec"
  ])
])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接