RailsによるアジャイルWebアプリケーション開発のp.181に載っているRuby Coverageですが、例のとおりに実行しても動作しませんでした。かわりにrcovというツールを使ってみました。
うちの環境はこんな感じです。
- OS: NetBSD 3.0
- DB: MySQL 5.0.20
- Ruby: 1.8.4
- Rails: 1.1.2
- Activerecord: 1.14.2
coverageがインストールされていなかったので、まず
# gem install coverage
でcoverage-0.3をインストールします。そして実行すると
% ruby -rcoverage test/functional/store_controller_test.rb
ruby: no such file to load -- coverage (LoadError)
のようになりました。
googleで検索してみると、これを修正する方法なども見つかりましたが、
http://wiki.rubyonrails.org/rails/pages/HowtoRunTestsWithCoverageによると、rcoverageではなくrcovを使用する方法が推薦されていたので、それを試してみることにします。
rcovはgemではインストールできないため、
http://eigenclass.org/hiki.rb?rcovからrcov-0.3.0をダウンロードします。そして以下のようにしてインストールします。
% tar zxvf rcov-0.3.0.tar.gz
% cd rcov-0.3.0
# ruby setup.rb
これを使ってみます。
% rcov test/functional/store_controller_test.rb
とすると、カレントディレクトリにcoverageというディレクトリが作成され、その下にhtmlファイルが生成されます。表示例はrcovの配布元の
http://eigenclass.org/hiki.rb?rcovで見ることができます。
テキストで出力したい場合は、-tオプションをつけます。-tオプションをつけると、標準出力に出力されるので必要に応じて適当なファイルにリダイレクトします。
% rcov --no-html -t test/functional/store_controller_test.rb > coverage-out.txt
rcovは以上で終了です。
rcovと似たようなものにinsuranceというものもあるようです。
http://jp.rubyist.net/magazine/?0013-RubyOnRailsなどで紹介されています。今回はinsuranceは試していません。