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

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

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

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/03/15 19:03:46時点 Amazon調べ-詳細)

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

[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット

created by Rinker
THE NORTH FACE(ザノースフェイス)
¥29,280 (2024/03/15 19:06:01時点 Amazon調べ-詳細)

防水暴風で耐久性抜群なので旅行で大活躍です!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,080 (2024/03/15 19:03:47時点 Amazon調べ-詳細)

翼を授けよう!

モンスターエナジー 355ml×24本 [エナジードリンク]

created by Rinker
モンスター
¥4,748 (2024/03/15 19:03:48時点 Amazon調べ-詳細)

脳を活性化させるにはこれ!

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

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,250 (2024/03/15 19:03:48時点 Amazon調べ-詳細)

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

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

created by Rinker
Bauhutte(バウヒュッテ)
¥13,861 (2024/03/15 15:06:46時点 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