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

Gun*_*una 1 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它显示报告如下图所示 在此输入图像描述

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

在此输入图像描述

我尝试使用JDK7和8运行报告,但结果相同.还尝试更改为最新版本的JaCoCo,但结果仍然相同.

有什么想法为什么报告显示为0%的覆盖率?在运行Gradle任务时,它成功地在androidTest文件夹中运行我的测试. 在此输入图像描述

面对这个问题中提到的同样问题 - 这个问题还没有答案

Mr-*_*IDE 8

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

  • 一些较新的三星设备,当你运行的gradle Jacoco任务createDebugCoverageReport或者createDebugAndroidTestCoverageReport,它会运行单元测试,但显示0%的覆盖率.

  • 但是在Google Nexus 5或大多数模拟器上,当您运行相同的Jacoco任务时,它将正常工作并显示正确的覆盖范围.较旧的三星设备也运行良好.

这很奇怪.

还要记住确保所有测试都先通过.这是Jacoco的另一个限制,因为即使您的整个套件中的一个小测试失败,它也不会生成测试覆盖率报告.另一个注意事项:生成覆盖率报告时,您的应用程序可能会自动卸载.未知原因 - 你只需要重新安装它.

更新,2018年10月11日:即使单个测试失败,也可以生成覆盖率报告.在你的app/build.gradle中使用它(从这里):

buildTypes {
    debug {
        testCoverageEnabled = true
    }
}

project.gradle.taskGraph.whenReady {
    connectedDebugAndroidTest {
        ignoreFailures = true
    }
}
Run Code Online (Sandbox Code Playgroud)

自动构建脚本可能需要使用该"--continue"标志,以确保测试失败将继续gradle任务; 这样的事情:

./gradlew createDebugCoverageReport --continue
Run Code Online (Sandbox Code Playgroud)

更多信息,另见:

  • “还要记住确保所有测试首先通过”。那条线救了我。谢谢你的帖子。 (2认同)