基本的にはJenkinsを利用したAndroidコード品質の見える化 - Qiitaを参考にしています。その上で動かすために変更を加えた箇所です。
Jenkins JaCoCoプラグインのダウングレード
Robolectricを利用したテストのカバレッジを取るためにはJaCoCo 0.7.1系が必要らしいです。
参考:
Тестирование на Android: Robolectric + Jenkins + JaСoСo / Блог компании Rambler&Co / Хабрахабр
Testing for Android: Robolectric + Jenkins + JaCoCo — IT daily blog, news, magazine, technologies(上記の勝手?英訳)
android - JaCoCo doesn't work with Robolectric tests - Stack Overflow(ベストアンサーより)
JaCoCo 0.7.1系をサポートしているのはJenkins JaCoCoプラグインの1.0.18までなので、アーカイブからダウンロードして手動でインストールします。(既に最新版をインストールしている場合も同様の方法でダウングレードできます)
Jenkinsの管理>プラグインの管理>高度な設定(タブ)>プラグインのアップロード
また、build.gradleのjacoco.toolVersionもこれに合わせて変更します。
jacoco {
toolVersion = "0.7.1+"
}
現在最新のバージョン2.0.1でJaCoCo 0.7.5系が必要になりましたが、Android Studio上でJaCoCoカバレッジ出力に必要な0.7.4系とexecの形に互換がなくなっています。Robolectricを利用していなければ以下の記述で。
2.0.1を利用するなら
jacoco {
toolVersion = "0.7.5+"
}
// 単体でのJaCoCoレポート出力では0.7.4系が必要なため削除せざるを得なかった
//task jacocoReport(type: JacocoReport, dependsOn: "testDebug") {
// 以下略
//}
1.0.19~2.0.0を利用しているなら(Android Studioでもカバレッジ取りたいとき)
jacoco {
toolVersion = "0.7.4+"
}
task jacocoReport(type: JacocoReport, dependsOn: "testDebug") {
// 略
}
ProductFlavorを考慮したJenkinsの設定変更
私の抱えているプロジェクトの場合、1つのプロジェクトに複数のProductFlavorがあり参考にしたQiitaの記述だけではJaCoCoリポート出力時にエラーとなってしまったので以下の修正を加えました。(なので、特に設けていない場合はここは手を入れなくてもいいはずです)
- Path to exec files
**/test**.exec
- Path to class directories(ProductFlavor毎にintermidiates/classesの下にflavor/debugといった形で1階層挟まるため。ワイルドカードでOK)
**/build/intermidiates/classes/*/debug
- Path to source directories(記述中のflavorは任意のProductFlavorの名前。ProductFlavorの数だけ記述を増やす。ワイルドカード指定だとtestまで含んでしまうので必要なだけ個別に)
**/src/main/java, **/src/flavor/java
※5分で AndroidStudio + JaCoCo の環境構築 - QiitaのようにJacocoReportタスクを定義している場合はbuild.gradleの記述に関しても同様の考慮が必要です。