RailsでCucumberのカバレッジをとる方法メモ

RailsでCucumberでテストを行った際のカバレッジをとってみたので、その手順をメモ

参考URL http://wiki.github.com/aslakhellesoy/cucumber/using-rcov-with-cucumber-and-rails

rcovのインストール

参考にしたgithubwikiではrcovではなくてspicycode-rcovを推奨していたのでそれを使う

$ sudo gem sources -a http://gems.github.com #すでにgemのソースにgithubを設定している人はこの手順は不要です
$ sudo gem uninstall rcov #まだrcovを入れていない場合はこの手順は不要です
$ sudo gem install spicycode-rcov

cucumber.rakeの修正

{RAILS_ROOT}/lib/tasks/cucumber.rake以下のように修正
参考サイトには、予約後を英語で使用する設定が書かれているので注意が必要

desc "Run all features"
task :features => 'db:test:prepare'
task :features => "features:all"
require 'cucumber/rake/task' 

namespace :features do
  Cucumber::Rake::Task.new(:all) do |t|
    t.cucumber_opts = "--format pretty --l ja" # --l jaを追加(予約語を日本語で書いている場合)
  end
# ~ここからrcovの設定~
  Cucumber::Rake::Task.new(:rcov) do |t|
    t.cucumber_opts = "--format pretty --l ja" # 追加(予約後を日本語で書いている場合)
    t.rcov = true
    t.rcov_opts = %w{--rails --exclude osx\/objc,gems\/,spec\/}
    t.rcov_opts << %[-o "features_rcov"]
  end
# ~ここまで~
end

カバレッジを採取

コマンドプロンプトで以下のコマンドを発行

$ cd {RAILS_ROOT} #プロジェクトのフォルダに移動
$ rake features:rcov

採取したカバレッジは{RAILS_ROOT}/coverageに作成される

カバレッジの表示

コマンドプロンプトで以下のコマンドを発行

$ cd {RAILS_ROOT} #プロジェクトのフォルダに移動
$ open coverage/index.html

これでブラウザにカバレッジが表示される