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
このエラーが発生するのはなぜですか。どうすれば修正できますか?
基本的に私はこれを達成する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>
などのタスクが発生します
これを使用して、ローカルマシンで実行されている単体テストのコードカバレッジを測定します。
Javaプラグインもプロジェクトに適用されている場合、テストタスクに依存するjacocoTestReportという名前の新しいタスクが作成されます。
かなり論理的なもの-Javaコードのカバレッジの測定には、コンパイル、テストの実行などが必要です。
そのため、実際にbuild.gradle
の例を使用するとエラーが発生し、apply plugin: 'Java'
を追加すると失敗します。