You are currently browsing the tag archive for the ‘testing’ tag.
I had a few mis-configuration issues when setting up shoulda and rcov for a new Rails 2.2.2 project, so I thought I’d jot down a few notes (mini tutorial, quickstart) to help save others from burning time on what should be a simple task.
shoulda is a library build on Test::Unit that provides helpers, macros and assertions to make testing easier.
rcov is a code coverage tool for Ruby.
1. Install rcov
sudo gem install rcov
2. Install shoulda
sudo gem install thoughtbot-shoulda --source=http://gems.github.com
3. Create your Rails project
rails myapp
4. Modify myapp/Rakefile
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
require 'shoulda/tasks'
namespace :test do
desc 'Measures test coverage'
task :coverage do
rm_f "coverage"
rm_f "coverage.data"
rcov = "rcov -Itest --rails --aggregate coverage.data -T -x " rubygems/*,/Library/Ruby/Site/*,gems/*,rcov*""
system("#{rcov} --no-html test/unit/*_test.rb test/unit/helpers/*_test.rb")
system("#{rcov} --no-html test/functional/*_test.rb")
system("#{rcov} --html test/integration/*_test.rb")
system("open coverage/index.html") if PLATFORM['darwin']
end
end
5. Modify myapp/test/test_helper.rb
... # Add the following line require 'shoulda/rails' # require 'shoulda' also worked ...
Conclusion
After you’ve written some shoulda tests, you should be able to use the following rake commands:
rake test rake test:units rake shoulda:list # display specs from shoulda tests rake test:coverage # run rcov and display code coverage

Recent Comments