JUnit 5でテストを書いていると、「テストが通っているか」だけでなく、「どの処理までテストで確認できているか」も見たくなることがあります。

そのときに使えるのが、Javaのカバレッジ計測ツールであるJaCoCoです。

この記事では、GradleプロジェクトでJaCoCoを使い、JUnit 5のテスト実行後にHTML形式のカバレッジレポートを出力するための build.gradle 設定を整理します。

JaCoCoでできること

JaCoCoを使うと、テストを実行したときに、どのクラスやメソッドが実行されたかをレポートとして確認できます。

カバレッジは、単に数字を上げるためのものではありません。まだテストで確認できていない処理を探すための材料として使うと便利です。

pluginsにjacocoを追加する

まず、build.gradleplugins ブロックに jacoco プラグインを追加します。

plugins {
    id 'java'
    id 'jacoco'
}

すでに plugins ブロックがある場合は、新しく plugins ブロックを作るのではなく、既存のブロックの中に id 'jacoco' を追加します。

testタスクの後にレポートを作成する

JUnit 5のテストをGradleから実行し、そのあとにJaCoCoのレポートを作成するには、test タスクに設定を追加します。

test {
    useJUnitPlatform()
    finalizedBy jacocoTestReport
}

useJUnitPlatform() は、JUnit 5のテストをGradleから実行するための設定です。

finalizedBy jacocoTestReport を指定すると、test タスクの実行後に jacocoTestReport が続けて実行されます。

すでに test ブロックがある場合は、test ブロックを重複して作らず、既存の test ブロックの中に必要な設定を追加してください。

JaCoCoレポートの設定

次に、JaCoCoのHTMLレポートを出力する設定を書きます。

jacocoTestReport {
    dependsOn test

    reports {
        html.required = true
    }
}

dependsOn test は、jacocoTestReport を直接実行した場合でも、先に test を実行してからレポートを作るための設定です。

html.required = true を指定すると、ブラウザで確認しやすいHTML形式のレポートを出力できます。

build.gradleの設定例

ここまでの設定をまとめると、次のようになります。

plugins {
    id 'java'
    id 'jacoco'
}

test {
    useJUnitPlatform()
    finalizedBy jacocoTestReport
}

jacocoTestReport {
    dependsOn test

    reports {
        html.required = true
    }
}

既存のプロジェクトに追加する場合は、pluginstest ブロックを重複させないように注意してください。

レポートの出力先

テスト実行後、基本的には次のHTMLファイルをブラウザで開いて確認します。

build/reports/jacoco/test/html/index.html

Gradleやプロジェクト設定によって出力先が少し変わる場合もあるため、見つからない場合は build/reports/jacoco 配下を確認してください。

まとめ

GradleでJaCoCoを使う場合は、pluginsid 'jacoco' を追加し、test の後に jacocoTestReport が実行されるように設定します。

HTMLレポートを出力しておくと、テストで確認できている範囲と、まだ確認できていない処理を見つけやすくなります。


Java、JUnit 5、Mockito、DBUnit、Spring Bootなどを使ったテスト実装を体系的に学びたい方向けに、Udemyで講座も作っています。

講座はこちらです。
JUnit 5完全攻略: Javaのテスト実装を基礎から実務レベルまで学ぶ