我正在尝试让jacoco为我的Android测试项目创建代码覆盖率报告。
Gradle版本classpath 'com.android.tools.build:gradle:2.0.0'
我在build.gradle中有以下内容:
apply plugin: 'com.android.application'
apply plugin: 'jacoco'
jacoco {
toolVersion = "0.7.1.201405082137"
}
android {
buildTypes {
release {
}
debug {
testCoverageEnabled true
}
}
}
几乎95%的代码覆盖率(当我在2015年运行相同的报告时,它将报告显示为95%)。从那时起,代码和测试文件夹中没有太大变化。理想情况下,它应该将覆盖范围显示为类似
我尝试用JDK7和&amp ;;运行报告。 8但结果相同。也尝试更改为最新版本的JaCoCo,但结果仍然相同。
为什么报告显示为0%覆盖率?在运行Gradle任务时,它成功地在androidTest文件夹中运行我的测试。
Facing same issue as mentioned in this question - This question is unanswered yet
答案 0 :(得分:8)
我遇到了完全相同的问题。但是使用Guna的评论(2017年2月27日),似乎问题是由于在一些三星设备上运行覆盖测试而引起的。
在一些较新的三星设备上,当您运行Jacoco gradle任务createDebugCoverageReport
或createDebugAndroidTestCoverageReport
时,它将运行单元测试,但显示 0%覆盖率。
但是在 Google Nexus 5或大多数模拟器上,当您运行相同的Jacoco任务时,它将正常工作并显示正确的覆盖范围。较旧的三星设备也运行良好。
这很奇怪。
还要记住确保所有测试都先通过。这是Jacoco的另一个限制,因为即使您的整个套件中的一个小测试失败,它也不会生成测试覆盖率报告。另一个注意事项:生成覆盖率报告时,您的应用程序可能会自动卸载。未知原因 - 您只需重新安装即可。
更新,2018年10月11日:即使单个测试失败,也可以生成覆盖率报告。在app / build.gradle中使用此功能(来自here):
buildTypes {
debug {
testCoverageEnabled = true
}
}
project.gradle.taskGraph.whenReady {
connectedDebugAndroidTest {
ignoreFailures = true
}
}
自动构建脚本可能需要使用"--continue"
标志,以确保测试失败将继续gradle任务;像这样的东西:
./gradlew createDebugCoverageReport --continue
更多信息,另见:
答案 1 :(得分:0)
使用命令
生成your project的覆盖范围./gradlew clean createDebugCoverageReport
工作正常:
我唯一改变的地方是compileSdkVersion
从23
到25
和buildToolsVersion
从23.0.1
到25.0.2
,因为这是我拥有的版本。