Gradle 升级到版本 3.0.1 后生成冗余 jacoco.exec 文件
After upgrade of Gradle to the version 3.0.1 something generates redundant jacoco.exec file
我有以下模块:
- 应用程序 (com.android.application)
- 测试库 (com.android.library)
将Gradle升级到3.0.1版本后,Jacoco插件在执行测试后在应用程序(com.android.application)模块的根文件夹中生成冗余且无效的jacoco.exec文件.当我在 testlibrary (com.android.library) 模块中设置 testCoverageEnabled true 时生成此文件。如果我在 testlibrary 中设置 testCoverageEnabled false,则不会生成 jacoco.exec 文件。
预期行为
jacoco.exec 执行测试后,不应在应用程序模块的根文件夹中生成文件,无论 testlibrary 模块中的 testCoverageEnabled 标志设置为 true 还是 false。
当前行为
执行测试后,如果在 testlibrary 模块中将 testCoverageEnabled 标志设置为 true,jacoco.exec 文件将在应用程序模块的根文件夹中创建。
上下文
我正在尝试从 Gradle 2.2.2 版本升级到 Gradle 3.0.1 版本。但是在升级并执行所有测试后,我注意到在应用程序的根目录中生成了一个新的冗余jacoco.exec文件。
重现步骤
GitHub 展示问题的回购:https://github.com/DenysShovhenia/Test
重现步骤:
- 在 Android Studio 中打开项目
- 运行 Test(root) 模块的 testDebugUnitTest 任务
- 注意在应用模块的根文件夹中新创建的jacoco.exec文件
希望有人能帮我解决这个问题。
这实际上是一个目前尚未关闭的错误: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) 不要在应用程序模块的测试中使用库中的代码。
有用link:
http://www.qalearningguide.com/2017/10/code-coverage-for-android-using-jacoco.html
我有以下模块:
- 应用程序 (com.android.application)
- 测试库 (com.android.library)
将Gradle升级到3.0.1版本后,Jacoco插件在执行测试后在应用程序(com.android.application)模块的根文件夹中生成冗余且无效的jacoco.exec文件.当我在 testlibrary (com.android.library) 模块中设置 testCoverageEnabled true 时生成此文件。如果我在 testlibrary 中设置 testCoverageEnabled false,则不会生成 jacoco.exec 文件。
预期行为
jacoco.exec 执行测试后,不应在应用程序模块的根文件夹中生成文件,无论 testlibrary 模块中的 testCoverageEnabled 标志设置为 true 还是 false。
当前行为
执行测试后,如果在 testlibrary 模块中将 testCoverageEnabled 标志设置为 true,jacoco.exec 文件将在应用程序模块的根文件夹中创建。
上下文
我正在尝试从 Gradle 2.2.2 版本升级到 Gradle 3.0.1 版本。但是在升级并执行所有测试后,我注意到在应用程序的根目录中生成了一个新的冗余jacoco.exec文件。
重现步骤
GitHub 展示问题的回购:https://github.com/DenysShovhenia/Test
重现步骤:
- 在 Android Studio 中打开项目
- 运行 Test(root) 模块的 testDebugUnitTest 任务
- 注意在应用模块的根文件夹中新创建的jacoco.exec文件
希望有人能帮我解决这个问题。
这实际上是一个目前尚未关闭的错误: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) 不要在应用程序模块的测试中使用库中的代码。
有用link: http://www.qalearningguide.com/2017/10/code-coverage-for-android-using-jacoco.html