Android 覆盖本地单元测试

Jon*_*Jon 7 android code-coverage jacoco

我一直在尝试获取本地单元测试的代码覆盖率,但没有成功。

这是我所说的本地单元测试的参考。

https://developer.android.com/training/testing/unit-testing/local-unit-tests.html

为了运行我的单元测试,我使用以下 gradle 命令。

./gradlew clean testDebugUnitTest

此任务将运行单元测试,但是当我查看“build/jacoco”文件夹中生成的 jacoco 文件(testDebugUnitTest.ec)时,它始终显示空覆盖范围。

我已在 build.gradle 文件中启用了覆盖范围,如下所示。

android {
    buildTypes {
        debug {
            testCoverageEnabled true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎没有帮助。我有什么遗漏的吗?

请注意,如果我通过 Android Studio 运行本地单元测试,则一切正常。我单击“测试”模块,然后单击“运行覆盖率测试”。

Jon*_*Jon 4

所以,我找到了我自己问题的答案。奇怪的是,看起来运行“testDebugUnitTest”并设置“testCoverageEnabled”标志是正确的方法。

然而,由于显然 gradle 的 jacoco 版本与 Android Studio 和我的 CI 系统(Jenkins)中运行的 jacoco 版本不同,因此由于 jacoco 中的一些向后兼容性问题而无法查看它。

为了解决这个问题,我将 gradle 中的 jacoco 版本设置为 Android Studio (Intellij) 和 Jenkins 中的相同版本。

jacoco {
    toolVersion = '0.7.0.201403182114'
}
Run Code Online (Sandbox Code Playgroud)

我将上面的代码放在我的 build.gradle 文件中。