android jacoco coverage使用gradle显示0%但是有95%的测试覆盖代码

时间:2017-02-25 03:34:15

标签: android gradle jacoco

我正在尝试让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
        }
    }
}

显示报告如下图 enter image description here

几乎95%的代码覆盖率(当我在2015年运行相同的报告时,它将报告显示为95%)。从那时起,代码和测试文件夹中没有太大变化。理想情况下,它应该将覆盖范围显示为类似

enter image description here

我尝试用JDK7和&amp ;;运行报告。 8但结果相同。也尝试更改为最新版本的JaCoCo,但结果仍然相同。

为什么报告显示为0%覆盖率?在运行Gradle任务时,它成功地在androidTest文件夹中运行我的测试。 enter image description here

Facing same issue as mentioned in this question - This question is unanswered yet

2 个答案:

答案 0 :(得分:8)

我遇到了完全相同的问题。但是使用Guna的评论(2017年2月27日),似乎问题是由于在一些三星设备上运行覆盖测试而引起的。

  • 一些较新的三星设备上,当您运行Jacoco gradle任务createDebugCoverageReportcreateDebugAndroidTestCoverageReport时,它将运行单元测试,但显示 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

工作正常:

report

我唯一改变的地方是compileSdkVersion2325buildToolsVersion23.0.125.0.2,因为这是我拥有的版本。