Install thoughtbot shoulda and rcov (the right way)
By kenglish
Install rcov & ruby-prof (rcov-0.9.6 & ruby-prof-0.7.3 at the time of this writing).
sudo gem install ruby-prof rcov --no-ri --no-rdoc
Update your test/test_helper.rb, add:
require 'shoulda/rails'
Install Thoughbot’s Shoulda gem (shoulda-2.10.2 at the time of this writing). Make sure you have added GemCutter as one of your ruby gem sources.
sudo gem install shoulda --no-ri --no-rdoc
Edit your applicaitons main Rakefile and add:
require(File.join(File.dirname(__FILE__), 'config', 'boot')) require 'rake' require 'rake/testtask' require 'rake/rdoctask' require 'tasks/rails' require 'shoulda/tasks' def run_coverage(files) rm_f "coverage" rm_f "coverage.data" # turn the files we want to run into a string if files.length == 0 puts "No files were specified for testing" return end files = files.join(" ") if PLATFORM =~ /darwin/ exclude = '--exclude "gems/*"' else exclude = '--exclude "rubygems/*"' end rcov = "rcov --rails -Ilib:test --sort coverage --text-report #{exclude} --aggregate coverage.data" cmd = "#{rcov} #{files}" puts cmd sh cmd end namespace :test do desc "Measures unit, functional, and integration test coverage" task :coverage do run_coverage Dir["test/**/*.rb"] end namespace :coverage do desc "Runs coverage on unit tests" task :units do run_coverage Dir["test/unit/**/*.rb"] end desc "Runs coverage on functional tests" task :functionals do run_coverage Dir["test/functional/**/*.rb"] end desc "Runs coverage on integration tests" task :integration do run_coverage Dir["test/integration/**/*.rb"] end end end
Checkout your new coverage rake tasks:
rake -T | grep cov
Should show you:
rake test:coverage # Measures unit, functional, and integration test coverage rake test:coverage:functionals # Runs coverage on functional tests rake test:coverage:integration # Runs coverage on integration tests rake test:coverage:units # Runs coverage on unit tests



November 19th, 2009
William Notowidagdo
June 8th, 2010
Thanks. This is just what I need.