我的项目结构如下::app
, :core
. :app
是Android应用项目,它依赖于:core
它具有所有的业务逻辑。
我有 Espresso
测试 :app
,并且由于那里的所有问题和指南,我能够运行并获得覆盖率报告。但覆盖范围仅适用于 :app
中的代码.
如何获得由我的 :app
产生的所有项目( :core
和 Espresso
)的覆盖范围仪器测试?这甚至可能吗?
任何帮助是极大的赞赏。
最佳答案
即使您在问题中没有提到 Jacoco,它也会列在标签中,所以我假设您想使用它来创建覆盖率报告。 Gradle Jacoco 插件 ( apply plugin: 'jacoco'
) 允许您创建类型为 JacocoReport
的自定义任务.
定义这样一个任务,您可以指定源和类目录以及执行数据:
task jacocoTestReport(type: JacocoReport) {
dependsOn // all your test tasks
reports {
xml.enabled = true
html.enabled = true
}
sourceDirectories = // files() or fileTree() to your source files
classDirectories = // files() or fileTree() to your class files
executionData = // files() or fileTree() including all your test results
}
对于 Espresso 测试,执行数据应包括所有生成的
.ec
文件。您可以在 Gradle 根项目中定义此任务,并链接到子项目的文件和任务。有an example对于自定义 Jacoco 报告任务,即使它旨在为多种测试类型创建统一报告,也可以针对这种多项目问题进行转移。
关于gradle - 为其他模块生成覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057920/