Cucumber
Cucumber is a BDD framework for Ruby. Specs will be written at this higher layer first to drive behaviour.RSpec 2
RSpec 2 just came out of beta. It is a TDD framework for Ruby. Specs will be written at this second layer for testing the details of the implementation.Capybara
Capybara is a replacement for Webrat. It is used to simulate how a real world user would interact with your application. A good post about why you would use Capybara over Webrat can be found here.AutoTest
AutoTest runs your Cucumber and RSpec specs automatically whenever a file that affects the specs is modified.Install
This builds on top of my previous post on installing Rails 3.0. This assumes that the Rails application was created without Test::Unit using -T. Check out Rails 3.0 agnosticism for an explanation.Open Gemfile and add the following.
group :development, :test do gem 'capybara' gem 'database_cleaner' gem 'cucumber-rails' gem 'cucumber' gem 'rspec-rails' gem 'autotest' gem 'spork' gem 'launchy' end
Install the gems. If you aren't using ActiveRecord, you won't have a database.yml. cucumber:install will complain unless you pass -D to it.
bundle install rails generate rspec:install rails generate cucumber:install --rspec --cabybara
AutoTest checks your entire project for changes. When tests fail, test.log is written to and because there is a change, AutoTest will kick-off again, and again, and again. To stop this from happening, create a .autotest at the root of your project to ignore certain files.
Autotest.add_hook :initialize do |at| %w{ .git doc log tmp vendor }.each { |ex| at.add_exception( ex ) } end
AutoTest does not run Cucumber out of the box. There is debate whether autotesting Cucumber is a good idea since it is a very high-level test and can be quite heavy. Autotests should run quickly. If you want autotesting of Cucumber, you must add AUTOFEATURE to your environment before running or in your .bashrc.
export AUTOFEATURE=true
Start continuous testing. Hit ctrl+c twice to stop.
autotest
thanks for your post.
ReplyDeleteit really helped me
@paz Glad to hear that!
ReplyDeleteExcellent write-up, thanks for the detailed explanation!
ReplyDeleteYou're welcome :)
ReplyDelete