simplecovを使ってみた

※実際に使ったのと記事を書いた時期にタイムラグがあるため漏れがあるかもしれません。ご了承下さいm(_ _)m

使ってみて良かった事

  1. model、controllerなどで定義したメソッドのテストの有無をチェックしてくれるので漏れを解消できる
  2. テストを書く動機となった
    • 何パーセントテストを書けているか教えてくれるので、100%にしたくなる

導入

  • Gemfile に以下のように書き込み bundle install を実行
gem 'simplecov', require: false, group: :test
  • spec/spec_helper.rb の先頭に以下のように書き込みます
require 'simplecov'
SimpleCov.start

使い方

  • いつも通りspecを流します
$ bin/rspec
  • するとアプリのホームディレクトリに coverage/index.html というファイルが作成されます
    • gitで管理する必要は無いと思うので、私は coverage ディレクトリごとgit管理下から外してしまっています
  • そのファイルをブラウザで開くと以下のようにファイルごとのテスト対応状況を一覧で表示してくれます

f:id:t_ohtsuka:20141019211249p:plain

フィルタリング

  • 使い方としては上記で終了なのですが、vendor/bundle 配下に gem をインストールしているからか、そのテストも表示してしまうようです(でいいのかな?)
  • vendor/bundle 配下のテストを非表示にするために、rails_app ディレクトリ配下に、以下のように .simplecovというファイルを作成しましょう
SimpleCov.start :test_frameworks do
  add_filter "/vendor/bundle/"
end
  • ファイル作成後もう一度specを流すと、以下のように自身で書いたコードに対してのみテストが書かれているかどうかを表示してくれるようになりました

f:id:t_ohtsuka:20141019212639p:plain

  • 目指せ100%!!