合并Android单元测试和连接的测试代码覆盖率数据已被破坏

时间:2017-10-29 08:57:59

标签: android-gradle jacoco android-studio-3.0

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

找到了答案

1 个答案:

答案 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"
    }
}