如何在Android中为Espresso测试自定义Jacoco

4
我有一个涉及模块之间奇怪配置的库项目。由于一些特定限制,我现在有3个模块:core(主模块),core-test(单元测试所在模块)和core-app(Espresso测试所在模块)。
这时,我需要生成一个覆盖率报告并在我们的CI服务器上使用。使用additionalSourceDirsadditionalClassDirs等属性,我创建了一个自定义任务来启用核心类在生成的jacoco.exec文件中显示。但是对于Espresso测试,我找不到一种自定义此操作的方法,因为Android Gradle插件上的jacoco配置节点似乎没有选项可供任何内容。为特定构建配置启用testCoverageEnabled可以工作,它会生成覆盖率报告,但仅适用于core-app中的类(我知道,在常规项目中,这是预期行为),因此coverage.ec文件没有我的其他类的执行数据。
有人知道如何为集成测试添加更多类/源到覆盖任务中吗?(也许通过某种方式扩展AndroidJUnitRunner或通过Groovy更改任务本身?)

你能否请发一下你的 build.gradle 文件? - Testing Singh
嘿,我基本上处于完全相同的情况。我知道这已经过时了,但您能否分享一下您最终采取的解决此问题的方法?谢谢! - oaskamay
1个回答

0

你需要在你的 build.gradle 文件中添加以下内容:

apply plugin: 'jacoco'
jacoco {
    toolVersion "0.7.5.201505241946"
}

同样在 buildTypes 中:

debug {
    testCoverageEnabled = true

运行

gradle tasks 

你会看到一个名为(如果你正在使用调试版本进行覆盖率测试)的任务

createDebugCoverageReport

运行

gradle createDebugCoverageReport

您将在以下文件夹中看到 coverage.ec

$build_dir/outputs/code-coverage/connected/flavors/debug/coverage.ec

你使用的是哪种设备和操作系统?某些带有特定操作系统的设备会产生空的覆盖率报告。请分享更多关于你所使用的操作系统和设备的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接