2017-03-27 10 views
4

私のプロジェクト構成は次のとおりです::app,:coreです。 :appはAndroidアプリケーションプロジェクトで、すべてのビジネスロジックを持つ:coreに依存しています。他のモジュールのカバレッジを生成

:appのテストでは、Espressoのテストがあり、すべての質問とガイドのおかげでカバレッジレポートを取得できました。しかし、カバレッジは:appのコードのみです。

Espresso計測器テストの結果、すべてのプロジェクト(:appおよび:core)のカバレッジを取得するにはどうすればよいですか?これも可能ですか?

ご協力いただきまして誠にありがとうございます。

答えて

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 
} 

を、実行データが生成されたすべての.ecのファイルを含める必要があります。 Gradleルートプロジェクトでこのタスクを定義し、ファイルとサブプロジェクトのタスクの両方にリンクすることができます。

カスタムJacocoレポートタスクにはan exampleがあります。複数のテストタイプの統一レポートを作成することを目的としていても、このマルチプロジェクトの問題のために転送できます。

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 
} 
関連する問題