我有以下模块:
将Gradle升级到3.0.1版后,Jacoco插件在执行测试后会在app(com.android.application)模块的根文件夹中生成冗余且无效的jacoco.exec文件。在testlibrary(com.android.library)模块中设置 testCoverageEnabled true 时生成此文件。如果我在testlibrary testCoverageEnabled false 中设置,则不会生成jacoco.exec文件。
预期行为
执行测试后,不应在app模块的根文件夹中生成jacoco.exec文件,无论testCoverageEnabled标志在testlibrary模块中设置为true还是false。
当前行为
执行测试后,如果在testlibrary模块中testCoverageEnabled标志设置为true,则会在app模块的根文件夹中创建jacoco.exec文件。
上下文
我正在尝试从Gradle 2.2.2版本升级到Gradle 3.0.1版本。但是在升级和执行所有测试之后,我注意到在app的根目录下生成了一个新的冗余jacoco.exec文件。
重现步骤
GitHub回购以展示问题:https://github.com/DenysShovhenia/Test
重现的步骤:
我希望有人可以帮我解决这个问题。
答案 0 :(得分:0)
这实际上是一个现在尚未关闭的错误:https://issuetracker.google.com/issues/67872367
经过大量研究后,我找到了一些解决方法。
1)将其添加到生成此文件的模块中。
android {
testOptions {
unitTests {
all {
// workaround for generation of unexpected jacoco.exec file in project directory
systemProperty 'jacoco-agent.destfile', buildDir.path + '/jacoco.exec'
}
}
}
}
2)在library / src / debug / resources文件夹下的库模块中创建文件 jacoco-agent.properties 。
并在下一行添加到此文件:
destfile=build/jacoco/coverage.exec
因此,您可以通过这种方式将此文件替换为构建文件夹。
其他变种:
3)将库模块的testCoverageEnabled设置为false。
4)在app模块的测试中不要使用库中的代码。
有用的链接: http://www.qalearningguide.com/2017/10/code-coverage-for-android-using-jacoco.html