スペックを書いてて思ったのが、テストを書くのは良いのですが書いたテストコードがテスト対象に対してどれぐらいカバーされているのかが分かりづらいなと感じることがあります。

そういった場合に、テストがどれくらいカバーできているか視覚的に分かるものがあれば、イメージが掴めてスペックが書きやすくなりますよね。

実はそういったことをサポートしてくれるライブラリは存在しました。

今回は、テストカバレッジを算出してくれるgemについてご紹介したいと思います。

カバレッジとは

カバレッジとは、テスト対象のプログラムに対してテストがどれぐらいカバーできているかを計測したものです。

カバレッジが分かれば、テストコードがどのくらい書けているかが視覚的に分かりやすいですし、テストコードを書く指標にもなります。

「simplecov」というgemを利用することで、簡単にカバレッジを出力できるようになります。

GitHub : colszowka/simplecov

gemの利用方法はとても簡単なので導入してみましょう。

導入方法

Gemfileに以下のgemを追加し、インストールを行います。

# Gemfile

gem 'simplecov', require: false, group: :test

そして、RSpecの設定ファイルに以下のコードを追加します。

# spec/system_spec.rb

require 'simplecov'
SimpleCov.start 'rails'

これで利用可能な状態になりました。

利用方法

以下のコマンドを実行して全てのテストを走らせます。

$ bin/rspec

実行するとcoverageフォルダが生成され、中にindex.htmlファイルが生成されているかと思います。

index.htmlを開くと、ブラウザでカバレッジの計測結果の詳細が表示されるようになります。

この画像の場合ですと、全体のカバレッジは約68%くらいとなります。

各ファイルをクリックするとコードが表示され、テストができている行は緑色に表示、テストができていない行は赤色で表示されます。

行の右側の数字は、テストによって命令が実行された数を表しています。

このsimplecovで計測される結果は、このように命令網羅という種類になるので、カバレッジが100%であったとしても意味のあるテストが記述できているかどうかはまた別問題となります。

ただ、今まではテストがどれだけ行き渡っているかが視覚的に分かりにくかったので、今までテストの進捗が分かりづらかった部分がだいぶ解消されますね。

更新日 : 2020年7月28日

投稿者: TWEI

趣味はプログラミング。 以前は仕事でプログラミングをやっていました。現在はWebエンジニアを目指して勉強中。 勉強で得た知識などをブログで発信していく予定です。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA