SimpleCovメモ

カバレッジレポートを出力するツール。SimpleCov 0.21.2で確認。

以下のGemをインストールする。

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

spec/spec_helper.rbの先頭に以下の2行を追加する。

require 'simplecov'
SimpleCov.start 'rails'

.gitignoreに以下の行を追加する。

/coverage

この時点で、bundle exec rspecを実行すれば、coverage/index.htmlが作成されブラウザで表示すればレポートを見れるはずである。

RSpecとSpringを連携していた場合はbin/spring stopを実行してからbin/rspecを実行しないとエラーになるかもしれない。

Springのせいでカバレッジレポートが間違った内容になることがあるらしいが、正しい結果が欲しい場合はSpringを経由しないbundle exec rspecを実行すれば良い。

Guardを利用している場合

上記の設定のままだとGuardでテストを実行するたびにカバレッジレポートが出力される。また、RSpecの高速化のためにSpringと組み合わせているとカバレッジレポートが間違った内容で出力されてしまう。

なので、必要なタイミングでbundle exec rspecを実行しカバレッジレポートを出力することにして、Guardではカバレッジレポートを出力しないようにする。

GuardfileのRSpecの設定を変更する。

# cmdにGUARD=trueを追加する
guard :rspec, cmd: 'GUARD=true bin/rspec' do
  # ...
end

spec/spec_helper.rbの設定を以下のように書き換える。

unless ENV['GUARD']
  require 'simplecov'
  SimpleCov.start 'rails'
end