Repository is archived
No commit activity in last 3 years
No release in over 3 years
Run your tests across multiple cores automatically.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme

multitest¶ ↑

Caveats¶ ↑

Multitest is still very young, it is in active development and is no where near complete or robust.

Multitest currently only works in a rails environment. It’s only because I use “constantize”.

If you depend on fixture data in your database, you may have data inconsistency errors. I like to use an empty DB and then use factories with transactional tests, and this runs great.

Installation¶ ↑

You will need to have Gemcutter in your list of gem sources.

gem install multitest

Usage¶ ↑

in your Rakefile:

require 'multitest'
require 'multitest/tasks'

on the commandline:

rake multitest
rake multitest:units multitest:functionals multitest:integration

Configuration¶ ↑

in your Rakefile:

Multitest.cores = 8

Benchmarks¶ ↑

This is one of our largest apps.

Normal suite¶ ↑

time rake test
259.03user 27.50system 5:14.76elapsed 91%CPU

2 Cores¶ ↑

time rake multitest
213.86user 23.38system 2:41.24elapsed 147%CPU

4 Cores¶ ↑

time rake multitest
223.18user 24.53system 2:08.96elapsed 192%CPU

Note the wall-time differences of 5:14 vs 2:41. 195% speedup on two cores. On 4 cores there is only a speedup of 243%, but that’s still quicker. If you send me impressive benchmarks, I’ll be happy to put them up here (8 cores anyone?).

Require Errors¶ ↑

If you get require errors like:

Running multitest:units
rake aborted!
no such file to load -- test_helper

Then you may want to use more absolute paths in your tests. For example, if you had:

# test/unit/my_class.rb
require 'test_helper'
class MyClass < ActiveSupport::TestCase
end

You should change it to:

# test/unit/my_class.rb
require File.join(File.dirname(__FILE__), '..', 'test_helper')
class MyClass < ActiveSupport::TestCase
end

Note on Patches/Pull Requests¶ ↑

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2009 Nick Gauthier. See LICENSE for details.