我的项目结构如下::app
,:core
。 :app
是Android应用程序项目,它依赖于具有所有业务逻辑的:core
。
我对Espresso
进行了:app
次测试,由于所有问题和指南,我能够运行并获得报道。但覆盖范围仅适用于:app
中的代码。
如何覆盖:app
项目测试产生的所有项目(:core
和Espresso
)?这甚至可能吗?
非常感谢任何帮助。
答案 0 :(得分:2)
即使您在问题中未提及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根项目中定义此任务,并链接到子项目的文件和任务。
自定义Jacoco报告任务有an example,即使它旨在为多个测试类型创建统一报告,也可以针对此多项目问题进行转换。
答案 1 :(得分:1)
默认情况下,JacocoReport
任务仅报告项目内来源的范围。您需要在JacocoReport
任务上设置additionalSourceDirs属性。
app/build.gradle
apply plugin: 'java'
apply plugin: 'jacoco'
// tell gradle that :core must be evaluated before :app (so the sourceSets are configured)
evaluationDependsOn(':core')
jacocoTestReport {
additionalSourceDirs = project(':core').sourceSets.main.allJava
}