rcovを使う

rcov?

rcovはコードカバレッジを計測するツールで、テストを書いていると受けられる恩恵のひとつ。Javaを使っていたときに、同様のツールであるcoverturaに出会って、これはすげぇと思ったなぁ。

rcovのインストール

今回は、下記のサイトを参考にした。

railsプロジェクトのGemfileに、rcovを追加する
Gemfile

gem "rcov"

rcovをインストールするために、bundleを実行する

$ bundle install
rcovを実行する
$ rake spec:rcov

日本語が入っている場合、「invalid byte sequence in US-ASCII (ArgumentError)」が発生する。
その対応として、下記のspec_helper.rbに下記のコードを追加すると解決する。
spec/spec_helper.rb

#
# quick monkey patch for rcov
#
# http://codefluency.com/post/1023734493/a-bandaid-for-rcov-on-ruby-1-9
#
if defined?(Rcov)
  class Rcov::CodeCoverageAnalyzer
    def update_script_lines__
      if '1.9'.respond_to?(:force_encoding)
        SCRIPT_LINES__.each do |k,v|
          v.each { |src| src.force_encoding('utf-8') }
        end
      end
      @script_lines__ = @script_lines__.merge(SCRIPT_LINES__)
    end
  end
end

再度実行すると正常に終了するはず。

rcovの結果を見る

rcovを実行すると、railsプロジェクトの直下にcoverageというディレクトリが作成されている。
その中のindex.htmlをブラウザで開くと、カバレッジが見れる。