24

I have a rails app, that is setup with the default test unit, how can I remove it and use rspec instead? (I don't have any tests written, I just didn't ignore it during app generation).

Blankman
  • 259,732
  • 324
  • 769
  • 1,199

2 Answers2

23

You can actually have any number of testing frameworks in use at the same time. For example, you can use cucumber, rspec, test-unit and mini-test and they will all function without stepping on each other's feet. To use rspec in rails simply add the following to your Gemfile:

group :development, :test do
  gem 'rspec-rails'
end

Then update or install your bundle and run the following command to setup rspec:

rails generate rspec:install

You can find more information here.

Pan Thomakos
  • 34,082
  • 9
  • 88
  • 85
13

For Rails 3, to really remove test_unit from your application, you need to remove (or comment out) the test_unit Railtie in application.rb

# require "rails/test_unit/railtie"

As Pan mentions, you don't have to just choose one testing framework. But you asked how to remove test_unit, so that is how you really do it.

(Curious about what this line of code does? Check out the railties/lib/rails/test_unit/railtie.rb source.)

To install RSpec into your app, follow the directions on rspec-rails. As it says, add rspec-rails to the :test and :development groups in the Gemfile:

group :test, :development do
  gem "rspec-rails", "~> 2.0"
end

Then run bundle install and then rails generate rspec:install

David J.
  • 31,569
  • 22
  • 122
  • 174
  • 2
    I got the pointer to remove the Railtie from https://github.com/rails/rails/issues/2564 because it gets rid of the default `rake test` tasks. But I'm not seeing the test_unit Railtie in a current Rails app -- looks like something is different now. – David J. Mar 05 '13 at 00:48