Android Build的覆盖范围

时间:2015-07-30 09:47:20

标签: android gradle code-coverage jacoco

我正在尝试基于gradle获得对android项目的报道。

所以我添加了我的应用程序build.gradle

jacoco { }

testCoverageEnabled true

内部调试。

正常工作。我可以使用createDebugCoverageReportconnectedCheck收到报告。

问题是开发人员通常使用调试版本来运行和测试应用程序。因此,在该构建中启用代码覆盖可能会降低构建速度,并且可能不需要此用法。

所以我想我会添加新的配置

coverage {
            initWith buildTypes.debug
            testCoverageEnabled true
}

不幸的是,没有createCoverageCoverageReportconnectedCheck没有运行覆盖类型。

当我用dex2jar反编译apk并用jd-gui查看内部时,我看到调试和覆盖内的jacoco调用所以它就在那里但是gradle插件没有为覆盖启动它。

这让我觉得覆盖范围只对调试版本进行了硬编码。

问题是: 1.我认为我需要覆盖buildType是否可以?我认为调试版本应该与构建和覆盖分开 2. jacoco报告仅在调试版本中可用吗?如果不是如何在覆盖类型上运行它? 3.我在哪里可以找到Jacoco扩展的源代码。我想看看实现?我找到了thisbuild-system/gradle-core/src/main/groovy/com/android/build/gradle/internal/coverage/JacocoExtension.groovy,但我觉得它不是gradle插件使用的那个。

Repository I am trying this on

1 个答案:

答案 0 :(得分:1)

我得到Gradle团队的部分答复 http://comments.gmane.org/gmane.comp.handhelds.android.adt.devel/5978

基本上你需要将覆盖范围定义为测试构建,这是通过

完成的

android { testBuildType "coverage" }

build.gradle中的

。这只回答了为什么覆盖目标不存在于覆盖范围内的原因。