我一直在尝试获取本地单元测试的代码覆盖率,但没有成功。
这是我所说的本地单元测试的引用。
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/