我试图基于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是否可以?我认为调试版本应该与build 2分开构建.jacoco报告是否仅在调试版本中可用?如果不是如何在覆盖类型上运行它? 3.我在哪里可以找到Jacoco扩展的源代码。我想看看实现?我找到了this和build-system/gradle-core/src/main/groovy/com/android/build/gradle/internal/coverage/JacocoExtension.groovy
,但我有一种感觉,它不是gradle插件使用的那个。
我得到了Gradle团队http://comments.gmane.org/gmane.comp.handhelds.android.adt.devel/5978的部分答复
基本上你需要将覆盖范围定义为测试构建,这是通过完成的
android {
testBuildType "coverage"
}
在build.gradle
。这只回答了为什么覆盖目标不存在于覆盖范围构建类型的原因。