JaCoCo+Tomcat+Jenkinsを使って手動テストのカバレッジレポートを出力する

こんにちは横部です。

JaCoCoはJavaの為のコードカバレッジ取得ライブラリです。

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

このライブラリを使うと、
テストでどこのコードを通ったのか数値化されるため、
テスト漏れを防ぐことができます。

私が参画しているプロジェクトではJUnitによる単体テストはJenkinsで自動化されており、Gradleでビルドされています。

https://gradle.org/

その際はbuild.gradleにGradle JaCoCo Pluginを設定するだけで、
簡単にコードカバレッジの取得とカバレッジレポートの出力ができていました。

しかしこのプラグインはGradle実行中のみ有効である為、
UIを操作して行う手動テストだとGradle JaCoCo Pluginが使えません。

UIを操作して行う手動テストでコードカバレッジを取得する為には、
TomcatにJaCoCo Agentを導入する必要があります。

またカバレッジレポートを出力するためには、
Jenkins上でTomcatのコードカバレッジを取得する必要があります。

そのため今回は、
UIを操作して行う手動テストでのコードカバレッジ取得と、
カバレッジレポートの出力に挑戦してみました。

JenkinsにJaCoCo Pluginの導入

JenkinsにJaCoCo Pluginを導入します。

JaCoCo Pluginによって、
カバレッジレポートが出力できるようになります。

導入方法については以下のページを参照してください。

https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin

今回行う手法はJenkins単体でコードカバレッジを取得する方法とは異なり、
Tomcatからコードカバレッジを取得します。

そのためにTomcatへJaCoCo Agentを導入する必要があります。

JaCoCo Agentの導入については次の手順で説明します。

TomcatにJaCoCo Agentの導入

TomcatにJaCoCo Agentを導入します。

まずJaCoCoのサイトから以下の手順でjacocoagent.jarを取得します。

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

JaCoCo PluginとJaCoCo Agentのバージョンが一致しない場合は、
コードカバレッジが正常に取得できない可能性があります。

対応バージョンについては以下のページを参照してください。

https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin#JaCoCoPlugin-ChangeLog

キャプチャ

取得したJaCoCo Agentは以下のディレクトリに設置します。

これでJaCoCo Agentの導入は完了しました。

Tomcatの設定

JaCoCo Agentを有効にする為にCATALINA_OPTSにjavaagentオプションを追加します。

変数の設定については以下のページを参照してください。

http://www.eclemma.org/jacoco/trunk/doc/agent.html

この設定を行うことで、
JaCoCo AgentはTomcatの起動と同時にコードカバレッジの取得を開始します。

Tomcat起動中はコードカバレッジの計測を行い続け、
Tomcat停止時にjacoco.execファイルを生成します。

この際appendオプションをtrueにしていると、
jacoco.execファイルにコードカバレッジが追記される設定となるため、
再起動ごとにコードカバレッジが消されないので便利です。

Tomcat停止後にjacoco.execファイルが作成されていれば、
設定は無事完了です。

このファイルがコードカバレッジの取得結果になります。

ただしファイルの内容はバイナリとなっており、
レポートとして見るためには次の手順でJenkinsのJaCoCo Pluginを使うことになります。

Jenkinsの設定

最後に作成されたjacoco.execファイルをJenkinsで取得してカバレッジレポートを出力します。

jacoco.execファイルをTomcatから取得するために、
今回はJenkinsの設定で「シェルの実行」を利用して取得してきます。

カバレッジを取得したいclassとsourceをスレイブサーバ上に展開する設定を記載し、
「JaCoCoカバレッジレポートを記録」で展開する予定のディレクトリを記載します。

設定の詳細については以下のページを参照してください。

https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin#JaCoCoPlugin-GettingStarted

キャプチャ4

設定後ジョブを実行することで、
Tomcatのコードカバレッジを取得して、
Jenkins上でカバレッジレポートを出力することが出来ました。

キャプチャ2

Comments are closed, but you can leave a trackback: Trackback URL.