Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

129 lines (87 sloc) 4.506 kb

Guard::Test Build Status

Test::Unit guard allows to automatically & intelligently launch tests when files are modified or created.

If you have any questions about Guard or Guard::Test, please join us on our Google group or on #guard (


  • Compatible with Test::Unit >= 2.2.
  • Tested on Ruby 1.8.7, 1.9.2, REE, Rubinius and JRuby.


Please be sure to have Guard installed before continue.

If you're using Bundler, add it to your Gemfile (inside the development group):

gem 'guard-test'

and run:

$ bundle install

or manually install the gem:

$ gem install guard-test

Add Guard definition to your Guardfile by running this command:

$ guard init test


Please read Guard usage doc.


Guard::Test can be adapted to any kind of projects.

Standard Ruby project

guard 'test' do
  watch(%r{^lib/(.+)\.rb$})     { |m| "test/#{m[1]}_test.rb" }
  watch('test/test_helper.rb')  { "test" }

Ruby On Rails project

guard 'test' do
  watch(%r{^app/models/(.+)\.rb$})                   { |m| "test/unit/#{m[1]}_test.rb" }
  watch(%r{^app/controllers/(.+)\.rb$})              { |m| "test/functional/#{m[1]}_test.rb" }
  watch(%r{^app/views/.+\.rb$})                      { "test/integration" }
  watch(%r{^lib/(.+)\.rb$})                          { |m| "test/#{m[1]}_test.rb" }
  watch('app/controllers/application_controller.rb') { ["test/functional", "test/integration"] }
  watch('test/test_helper.rb')                       { "test" }

Please read the Guard documentation for more info about the Guardfile DSL.


Guard::Test allows you to choose between two different runners (Guard::Test's runners are inherited from Test::Unit's console runner):

  • default: Display tests results as they happen, with different chars (green . for pass, red F for fail, purple E for error) and print failures/errors messages & backtraces when all the tests are finished. Obviously, this is the guard-test default.
  • fastfail: Display tests results as they happen and print failures/errors messages & backtraces immediately.

By default, guard-test will only look for test files within test/ in your project root. You can add any paths using the :test_paths option:

guard 'test', :test_paths => ['test', 'vendor/plugins/recaptcha/test', 'any/path/test'] do
  # ...

Available options:

:rvm            => ['1.8.7', '1.9.2'] # directly run your specs on multiple Rubies, default: nil
:bundler        => false              # don't use "bundle exec" to run the test command, default: true if a you have a Gemfile
:runner         => 'fastfail'         # default: 'default'
:cli            => "-v"               # pass arbitrary CLI arguments to the Ruby command that runs the tests, default: nil
:all_on_start   => false              # don't run all the tests at startup, default: true
:all_after_pass => false              # don't run all tests after changed tests pass, default: true
:keep_failed    => false              # keep failed tests until them pass, default: true
:test_paths     => ['spec']           # specify an array of paths that contain test files


Pull requests are very welcome! Please try to follow these simple "rules", though:

  • Please create a topic branch for every separate change you make;
  • Make sure your patches are well tested;
  • Update the README (if applicable);
  • Update the CHANGELOG (maybe not for a typo but don't hesitate!);
  • Please do not change the version number.

For questions please join us on our Google group or on #guard (


Rémy Coutable



Many thanks to Thibaud Guillaume-Gentil for creating the excellent Guard gem.

Jump to Line
Something went wrong with that request. Please try again.