将Gradle升级到3.0.1版后,会生成冗余的jacoco.exec文件

问题描述 投票:1回答:1

我有以下模块:

  • app(com.android.application)
  • testlibrary(com.android.library)

将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

重现步骤:

  • 在Android Studio中打开项目
  • 运行Test(root)模块的testDebugUnitTest任务
  • 请注意app模块根文件夹中新创建的jacoco.exec文件

我希望有人可以帮我解决这个问题。

android gradle jacoco
1个回答
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

因此,通过这种方式,您只需将此文件替换为build文件夹即可。

其他变种:

3)为库模块将testCoverageEnabled设置为false。

4)在app模块的测试中不要使用库中的代码。

有用的链接:http://www.qalearningguide.com/2017/10/code-coverage-for-android-using-jacoco.html

© www.soinside.com 2019 - 2024. All rights reserved.