android 覆盖本地单元测试

标签 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
        }
    }
}

但这似乎没有帮助。有什么我想念的吗?

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

最佳答案

所以,我找到了我自己问题的答案。奇怪的是,运行带有“testCoverageEnabled”标志集的“testDebugUnitTest”似乎是正确的方法。

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

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

jacoco {
    toolVersion = '0.7.0.201403182114'
}

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

关于android 覆盖本地单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40052876/

相关文章:

android - 完成 Activity 时出现 MediaPlayer 异常

java - 如何将 .jar 或 .class 转换为 .dex 文件?

node.js - 使用生成器的 Mocha 代码覆盖率

maven - Jacoco 代码覆盖率报告在 Jenkins 中显示 0 覆盖率

android - 无法实例化 Activity : ClassNotFound Exception

android - Intellij 13 在尝试将 Android 应用程序安装/启动到 USB 设备时出错

unit-testing - 代码覆盖率分析包括内部类型

node.js - Nodeunit - JSCovrage

java - Jacoco仪器 'Missing @CsvField annotation on field'

java - 考虑将 JaCoCo 与 Maven 和 Jenkins 一起使用