素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

投稿日: 2020年2月22日
最終更新日:

【HTMLガバレッジレポート】sbtのJaCoCoプラグインでJunitの実行結果をドキュメント化しよう【PlayFramework2.7】

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2025/01/05 12:56:12時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

【最新機種】GoPro hero11 Black

created by Rinker
¥61,300 (2025/01/05 20:59:47時点 楽天市場調べ-詳細)

最新機種でVlogの思い出を撮影しよう!

ドラゴンクエスト メタリックモンスターズギャラリー メタルキング

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,940 (2025/01/05 12:41:47時点 Amazon調べ-詳細)

みんな大好き経験値の塊をデスクに常備しておこう!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥15,855 (2025/01/05 12:09:12時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール

created by Rinker
BANDAI SPIRITS(バンダイ スピリッツ)
¥10,429 (2025/01/05 12:09:13時点 Amazon調べ-詳細)

もう一人の僕を呼び覚ませ!!

MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド

Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!

サンディスク microSD 128GB

スマホからSwitchまで使える大容量MicroSDカード!

ユニットテストのガバレッジを自動生成しよう

皆さんはユニットテスト書いていますか?

品質をあげるにはしっかりとユニットテストを書いて、CI環境でしっかり実施する事が大事です。

今回ご紹介するのは、ユニットテストの実施によって実行されたソース部分のガバレッジレポートをHTML形式で自動生成してくれるJaCoCoというプラグインをご紹介しようと思います。

出力対象のパッケージを制御する方法については以下でご紹介していますので、合わせてみて頂ければなと思います。

手順

sbt-jacocoプラグインの追加

まずはプロジェクトにsbt用のJaCoCoプラグインを追加しましょう。

project/plugins.sbtに以下を追記してください。

設定はたったこれだけです!

実行方法

テスト実行時のコマンドをsbt jacocoに変えて実行する事でJUnitの実行とレポートの生成を行なってくれます。

生成ディレクトリは {プロジェクトルート}/target/scala-2.13/jacoco/report です。

結果の中には、PlayFrameworkが自動で生成するパッケージ(routerviewscontroller.javascriptなどがありますがスルーしましょう。)

取り急ぎ、sbtが自動生成してくれたHomeControllerクラスのテスト結果を見てみましょう。

緑色になっているところがユニットテストで実行されたコード部分になります。

ユニットテスト作成の一つの指標として、全てのコードを通っていることを担保するには良いガバレッジに使えそうですね♪

実行されていない場合

実行されていない場合はこのように赤くなります。

なので、まずは全ての行が緑色になるようにユニットテストやソースの修正をしましょう。

※今回は紹介するためにテスト元クラスをいじってJaCoCoの動きをご紹介していますorz

if文を網羅していない場合

また、以下のような引数の値によってif文などの分岐が存在する場合に、ユニットテストで網羅できていない場合は以下のように黄色くなります。

その場合は、ユニットテスト側で分岐を網羅するようなケースを追加してあげることでガバレッジが100%になります。

ちなみに、分岐の中に入ってソースの全てが実行されたとしても、falseのパターンが実行されていないと判断されて黄色になりますのでご注意を。

終わりに

以上のように、ユニットテストと組み合わせる事でとても有能なガバレッジを自動生成してくれます。

ユニットテストの実施結果を残すことはとても大事なので、是非導入してみてください♪

CATEGORIES & TAGS

IT