LoginSignup
1
1

More than 5 years have passed since last update.

Robolectricを利用したプロジェクトのJaCoCoカバレッジをJenkinsで測定する

Last updated at Posted at 2016-03-15

基本的には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の管理>プラグインの管理>高度な設定(タブ)>プラグインのアップロード

jenkins_jacoco.png

また、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の記述に関しても同様の考慮が必要です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1