Android Gradle插件的2.3.3版本能够提供合并的单元测试和连接的测试代码覆盖率数据。在3.0.0版中,此功能被破坏,因为每种测试类型都使用不同且不兼容的JaCoCo版本。 Rafael Toledo提供a Medium blog post展示如何使用2.3.3进行此项工作。我提供了a Github repo,它说明了一些分支中的工作代码和损坏的代码。 repo documentation提供了读者摘要对问题的描述。在这一点上,我确信Gradle Plugin团队拥有该问题,并将很快提交一个错误。我的问题是:
1)有人能建议一个可行的解决方法吗? (卡门·阿尔瓦雷兹(Carmen Alvarez)在媒体博客文章中发布了一个建议的解决方案,但我对此并不高兴。)
2)有人能指点我如何破解和构建Gradle Android插件以测试潜在的修复方法吗? (我在http://tools.android.com/build/gradleplugin)
找到了答案答案 0 :(得分:2)
根据提供Android特定内容的Android Plugin DSL Reference:
要指定要使用的JaCoCo版本,现在需要在项目级build.gradle文件中将其作为buildscript依赖项包含在内,如下所示:
buildscript { dependencies { classpath "org.jacoco:org.jacoco.core:<jacoco-version>" ... } }
以前Android插件有
android {
jacoco {
version = "<jacoco-version>"
}
}
根据提供JacocoReport
类型任务的Gradle JaCoCo Plugin documentation:
JaCoCo插件添加了一个名为jacoco的项目扩展,类型为JacocoPluginExtension,它允许在构建中配置JaCoCo使用的默认值。
jacoco { toolVersion = "<jacoco-version>" }
所以这里修改了https://github.com/pajato/acc,允许对齐版本,以便./gradlew clean jacocoTestReport
的执行成功:
buildscript {
dependencies {
classpath "org.jacoco:org.jacoco.core:0.7.9"
}
}
allprojects {
apply plugin: "jacoco"
jacoco {
toolVersion = "0.7.9"
}
}