![](/img/trans.png)
[英]Upgrade to AGP 4.2.0 ,unable to generate Jacoco code coverage report
[英]AGP 7.2.x jacoco coverage data is unexpectedly low
从 AGP 7.2.0-alpha01 及更高版本(包括 7.2.0、7.3.x 和 7.4.x 预览版本)开始,尽管所有配置/信息似乎都按预期设置/工作,但 jacoco 覆盖范围无法正常工作。
在 AGP 7.1.3 上,覆盖率显示达到预期的 %s(对于我正在使用的应用程序来说非常高 - 可以说超过 90%)- 一切正常。 当我切换到任何较新的 AGP 版本时,覆盖率下降到接近 10% 或更少。 确实显示了一些覆盖率数据,但应用程序中的大多数类都显示为未覆盖。 我没有看到为什么有些数据显示但有些数据不显示的模式。 仅通过仪器测试测试的类和仅通过常规单元测试测试的其他类都缺少数据 - 并且也存在相反的情况(意味着在这些情况下数据显示为少数类),所以这非常令人困惑......
我像这样设置我的 jacoco 任务:
task developDebugCodeCoverageReport(type: JacocoReport, dependsOn: ['testDevelopDebugUnitTest', 'createDevelopDebugCoverageReport']) {
group = 'Code Coverage'
description = 'Generate Jacoco coverage reports for the developDebug build'
reports {
html.required.set(true)
xml.required.set(true)
}
def excludes = [
// list of files I want to exclude
]
def javaClasses = fileTree(dir: "${buildDir}/intermediates/javac/developDebug/classes", excludes: excludes)
def kotlinClasses = fileTree(dir: "${buildDir}/tmp/kotlin-classes/developDebug", excludes: excludes)
classDirectories.setFrom(files([
javaClasses,
kotlinClasses
]))
sourceDirectories.setFrom("${project.projectDir}/src/main/java")
def junitTestsData = "${buildDir}/outputs/unit_test_code_coverage/developDebugUnitTest/testDevelopDebugUnitTest.exec"
def androidTestsData = fileTree(dir: "${buildDir}/outputs/code_coverage/developDebugAndroidTest/connected/", includes: ["**/*.ec"])
executionData.setFrom(files([
junitTestsData,
androidTestsData
]))
}
我假设 AGP 7.2.x 进行了某种更改,破坏了 jacoco 读取覆盖率数据的方式。 更新 AGP 版本后生成的exec 和 ec 文件大小不同……但我对 jacoco/AGP 配置的了解还不够,无法自行继续。
我正在尝试设置一个小型示例应用程序来演示该问题,我担心它与我正在使用的依赖项之一相关的复杂性,但我们会看到......与此同时 - 有人有任何想法吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.