我正在尝试基于gradle获得对android项目的报道。
所以我添加了我的应用程序build.gradle
jacoco { }
和
testCoverageEnabled true
内部调试。
正常工作。我可以使用createDebugCoverageReport
或connectedCheck
收到报告。
问题是开发人员通常使用调试版本来运行和测试应用程序。因此,在该构建中启用代码覆盖可能会降低构建速度,并且可能不需要此用法。
所以我想我会添加新的配置
coverage {
initWith buildTypes.debug
testCoverageEnabled true
}
不幸的是,没有createCoverageCoverageReport
而connectedCheck
没有运行覆盖类型。
当我用dex2jar反编译apk并用jd-gui查看内部时,我看到调试和覆盖内的jacoco调用所以它就在那里但是gradle插件没有为覆盖启动它。
这让我觉得覆盖范围只对调试版本进行了硬编码。
问题是:
1.我认为我需要覆盖buildType是否可以?我认为调试版本应该与构建和覆盖分开
2. jacoco报告仅在调试版本中可用吗?如果不是如何在覆盖类型上运行它?
3.我在哪里可以找到Jacoco扩展的源代码。我想看看实现?我找到了this和build-system/gradle-core/src/main/groovy/com/android/build/gradle/internal/coverage/JacocoExtension.groovy
,但我觉得它不是gradle插件使用的那个。
答案 0 :(得分:1)
我得到Gradle团队的部分答复 http://comments.gmane.org/gmane.comp.handhelds.android.adt.devel/5978
基本上你需要将覆盖范围定义为测试构建,这是通过
完成的 android {
testBuildType "coverage"
}
build.gradle
中的。这只回答了为什么覆盖目标不存在于覆盖范围内的原因。