okuzawatsの日記

Android / Kotlin / GitHub Actions Enthusiast 🤖

[Android] build.gradle.ktsでJaCoCoを動かす

目次

AndroidのGradleの設定ファイルを .kts に書き換えた時、JaCoCoをセットアップする方法がわからなかったので頑張って動かしてみました。GradleとJaCoCoについてはよくわかっていないことが多いです。

動いている状態のプロジェクトを以下にpushしてあります。

JaCoCoのセットアップのために、Android用のプラグインを作ってくれている方がいたので、利用させていただきました。とても助かりました。ありがとうございます。

プロジェクトのsettings.gradle.kts

Maven Repositoryを追加します。プロジェクトによっては、プロジェクトの build.gradle.kts に追加する場合もあると思います。

dependencyResolutionManagement {
  // 略
  repositories {
    // 略
    maven(url = "https://plugins.gradle.org/m2/")
  }
}

プロジェクトのbuild.gradle.kts

プラグインをdependenciesに追加します。

buildscript {
  dependencies {
    // 追加
    classpath("com.dicedmelon.gradle:jacoco-android:0.1.5")
  }
}

plugins {
  // 略
}

モジュールのbuild.gradle.kts

プラグインを適用し、JaCoCoのバージョン、出力するカバレッジレポートの種別、カバレッジレポートの有効化を行います。

plugins {
  // 略
  id("com.dicedmelon.gradle.jacoco-android")
}

jacoco {
    toolVersion = "0.8.8"
}

tasks.withType<JacocoReport> {
    reports {
        csv.required.set(false)
        html.required.set(true)
        xml.required.set(true)
    }
}

android {
  // 略
  buildTypes {
    debug {
      enableUnitTestCoverage = true
    }
    // 略
  }
  // 略
}

dependencies {
  // 略
}

カバレッジレポートの出力

ユニットテスト実行後、コマンドを実行します。jacoco~ のコマンドは、プラグインが作ってくれるタスクです。

$ ./gradlew testDebugUnitTest
$ ./gradlew jacocoDebugUnitTest

app モジュールの場合は、app/build/jacoco/ にカバレッジレポートが出力されます。

TODO

カバレッジレポートのマージ

JaCoCoのカバレッジレポートをマージする方法があったような気がするのですが、できませんでした。

JaCoCoの設定の共通化

今の書き方だと各モジュールで同じ設定を書かないといけません。以下の記事でやっているように、JaCoCoの設定をモジュールの build.gradle.kts から切り出したかったのですが、できませんでした。

References

#Android

書いている人 😎

profile

茨城県つくば市在住のモバイルアプリケーションアーキテクト(Androidが得意です)。モバイルアプリのアーキテクチャ、自動テスト、CI/CDに興味があります。いわゆる「レガシーコード」のリファクタリング・リアーキテクチャが好きです。

👉 もっと詳しく

著書 ✍

Android クリーンアーキテクチャ ヒッチハイク・ガイド 🧳

Androidアプリでのクリーンアーキテクチャに入門するためのガイダンスです。クリーンアーキテクチャの概念を理解し、Androidアプリに適用する方法を解説しています。

販売サイトへ 🏃

Android ユニットテスト ヒッチハイク・ガイド 🧳

Androidアプリのユニットテストに入門するためのガイダンスです。初学者が混乱せずにAndroidアプリのユニットテストを書き始めることができる、ということを目的としています。

販売サイトへ 🏃

Android MVVMアーキテクチャ入門 🛠

Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。NextPublishingより出版されています。

販売サイトへ 🏃

関連記事 👀

お問い合わせ✉️

Androidアプリ開発、特にレガシープロジェクトに関するご相談はこちらまで📨

お名前

メールアドレス

お問い合わせ内容