android jacoco 覆盖率显示 0% gradle 但是有 95% 的测试覆盖了代码
android jacoco coverage shows 0% with gradle however there are 95% tests covering code
我正在尝试让 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 和 8 进行报告,但结果相同。也试过换成最新版本的 JaCoCo,结果还是一样。
知道为什么报告显示为 0% 的覆盖率吗?尽管 运行 Gradle 任务成功运行了 androidTest 文件夹中的测试。
Facing same issue as mentioned in this question - This question is unanswered yet
使用命令
为 your project 生成覆盖
./gradlew clean createDebugCoverageReport
工作正常:
我唯一改变的是 compileSdkVersion
从 23
到 25
和 buildToolsVersion
从 23.0.1
到 25.0.2
,因为这是我的版本。
我遇到了完全相同的问题。但是使用 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
更多信息,另请参阅:
我正在尝试让 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 和 8 进行报告,但结果相同。也试过换成最新版本的 JaCoCo,结果还是一样。
知道为什么报告显示为 0% 的覆盖率吗?尽管 运行 Gradle 任务成功运行了 androidTest 文件夹中的测试。
Facing same issue as mentioned in this question - This question is unanswered yet
使用命令
为 your project 生成覆盖./gradlew clean createDebugCoverageReport
工作正常:
我唯一改变的是 compileSdkVersion
从 23
到 25
和 buildToolsVersion
从 23.0.1
到 25.0.2
,因为这是我的版本。
我遇到了完全相同的问题。但是使用 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
更多信息,另请参阅: