Maven + JaCoCoでjavaの単体テストのカバレッジレポートを作ってみる。

JaCoCoとは?

Javaの単体テストでコードカバレッジのレポートが出力できるライブラリです。
カバレッジはステートメントカバレッジ(C0)とブランチカバレッジ(C1)が取得できます。

JaCoCoの詳細はココ

Mavenの設定

mavenのPluginで簡単に追加できるので、早速使ってみる。

pom.xmlに以下を追加するだけです。

ただし、ドキュメントにはSNAPSHOT版をインストールするように書いてありますが、こちらを使う場合はレポジトリも記載する必要があります。
レポジトリの詳細はこちら

レポジトリを追加するのが面倒だったので、Central Repositoryjacoco-maven-pluginの最新バージョンを調べてpom.xmlに記載します。

<project>
(...)
<build>
(...)
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.7.201606060606</version>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<reportSets>
<reportSet>
<reports>
<report>report</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
</project>

以下のコマンドでゴールの詳細一覧を表示できます。

$ mvn help:describe -Dplugin=org.jacoco:jacoco-maven-plugin -Ddetail

カバレッジレポートを作る

カバレッジレポートは次のコマンドで生成できます。コマンドの実行が完了するとtarget/site/jacoco/index.htmlにレポートが生成されます。

$ mvn clean jacoco:prepare-agent test jacoco:report

jacoco:prepare-agentでtestのargLineにjacoco.execを出力するように指定します。test実行するとtarget以下にjacoco.execが生成されます。jacoco:reportでjacoco.execを実行してhtmlを生成しているっぽいです。

レポートを確認

ブラウザから確認してみる。GUIであればファイルをダブルクリックでも確認できます。

$ cd target/site/jacoco/
$ python -m SimpleHTTPServer 8080

localhost:8080にブラウザで接続すると次の様な画面が表示されます。

jacoco-ui.png

数字だけでなくコードも色付きで確認できます。

jacoco-code.png

まとめ

CIと組み合わせて使ったら夢が広がりそう。C0, C1のレポートが簡単に作れるのでなかなかいい感じですね。

おわり。

参考

  1. http://www.eclemma.org/jacoco/