web-dev-qa-db-ja.com

Gradle Jacoco-メソッドjacocoTestReport()が見つかりませんでした

GradleでJacocoテストレポートを生成しようとしています。コードを同期しようとすると、次のエラーが表示されます。

エラー:(56、0)org.gradle.api.Projectタイプのプロジェクト ':app'の引数[build_38ehqsoyd54r3n1gzrop303so $ _run_closure4 @ 10012308]のメソッドjacocoTestReport()が見つかりませんでした。

私のbuild.gradleファイルには、次の項目が含まれています。

apply plugin: 'jacoco'

jacoco {
    toolVersion = "0.7.6.201602180812"
    reportsDir = file("$buildDir/reports/jacoco")
}

jacocoTestReport {
    group = "Reporting"
    reports {
        xml.enabled true
        csv.enabled false
        html.destination "${buildDir}/reports/coverage"
    }
}

documentation を見ると、間違っていることがわかりません。

Gradleバージョン:3.3

このエラーが発生するのはなぜですか。どうすれば修正できますか?

8
Guido

基本的に私はこれを達成する2つの方法を知っています。

最初のアプローチは、組み込みのAndroid Gradleプラグイン機能です:

Android { 
    ... 
    buildTypes { 
       debug { 
          testCoverageEnabled = true 
       } 
       ... 
    } 
    ... 
}

これは、実行可能なGradleタスクを定義します。私の知る限り、これはインストゥルメンテーションテストで問題なく機能します。詳細: Androidのコードカバレッジ

2番目のアプローチは、このプラグインを使用することです:

https://github.com/vanniktech/gradle-Android-junit-jacoco-plugin

セットアップは簡単です:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
         classpath 'com.vanniktech:gradle-Android-junit-jacoco-plugin:0.6.0'
    }
}

apply plugin: 'com.vanniktech.Android.junit.jacoco'

プロジェクトの同期後、jacocoTestReport<Flavor><BuildType>などのタスクが発生します

これを使用して、ローカルマシンで実行されている単体テストのコードカバレッジを測定します。

7
Christopher

質問に記載されたドキュメントに記載されているように

Javaプラグインもプロジェクトに適用されている場合、テストタスクに依存するjacocoTestReportという名前の新しいタスクが作成されます。

かなり論理的なもの-Javaコードのカバレッジの測定には、コンパイル、テストの実行などが必要です。

そのため、実際にbuild.gradleの例を使用するとエラーが発生し、apply plugin: 'Java'を追加すると失敗します。

3
Godin