我正在配置一个Android多模块Gradle项目,该项目将Kotlin用于应用程序和Gradle构建文件(Gradle.build.kts(。
我使用的是Gradle 7.3.3。
首先,我将Jacobo插件添加到模块级build.gradle.kts:
...
plugins {
...
jacoco
}
...
然后我点击Android Studio中的图标;将项目与渐变文件同步">
接下来,我找到调试构建类型并添加以下内容:
isTestCoverageEnabled = true
当我随后运行./gradlew testDebugUnitTest
时,会在<MODULE>/build/outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec
的模块中生成一个文件。
但是,如果我不添加行isTestCoverageEnabled = true
,或者如果我设置了isTestCoverageEnabled = false
,则在<MODULE>/build/jacoco/testDebugUnitTest.exec
的模块中会生成覆盖率结果文件。
当我生成每个.exec文件的HTML报告时;总计";底部的行具有匹配的计数。
这两个文件是否等效,只是根据isTestCoverageEnabled
的值位于不同的目录中?
如果是这样的话,那么似乎只要插件中包含jacoco,那么无论是否添加isTestCoverageEnabled = true
行,都会生成覆盖率结果。isTestCoverageEnabled
除了更改输出目录之外,还会做其他事情吗?我错过了什么?
我在多个项目中与这个问题斗争了3年,但我有一个解决方案(或者更确切地说是解决了我的问题的人(。
Android根覆盖插件可以用于在Java和/或Kotlin多模块项目中组合jUnit和插入测试,而无需配置任何其他内容。它解决了我的以下问题:
- 在多模块项目中获得覆盖
- Kotlin的报道不正确
- 将jUnit&仪器测试覆盖范围
已经确认,我的问题是由android gradle插件中的一个错误引起的,截至2022年8月,该问题尚未解决。
针对您的问题,isTestCoverageEnabled
用于在android gradle插件中配置嵌入式JaCoCo,如上所述,这是已知的缺陷。使用JaCoCo插件可以在渐变文件中配置,但不使用AGP 中的嵌入式JaCoCo