I downloaded source code for a project, found a bug, and fixed it.
Now I want to run tests to find out if I have broken anything.
The Tests are in minitest DSL.
How do I run them all at once?
I searched for applicable rake tasks etc, but I didn't find any.
Another way to do this using only Ruby's standard library is with
Dir.glob
. From within a ruby file, this would look like this:Or from the commandline, you can use this command:
Dir.glob('**/*Test.rb')
recursively searches the current directory for any file which matches*Test.rb
, so we simply take all those files andrequire
orrequire_relative
them. From the commandline,require_relative
fails, so we userequire
but first add the current directory to the$LOAD_PATH
through-I .
If you don't have rake, try this:
http://blog.gingergriffis.com/post/85871430778/ruby-how-to-run-all-tests-in-a-directory
Here's a link to Rake::TestTask.
There is an example in the page to get you started.
I'll post another one that I'm using right now for a gem:
As you can see, I assume that my files are all in
/lib
and that my specs are in/spec
and are namedwhatever_spec.rb
Hope it helps.
This is what
Rake::TestTask
does under the hood, more or less:Note:
lib
&test/test*.rb
(above) are the defaults buttest
&test/*_test.rb
, respectively, are more typical.Source: rake/testtask.rb at c34d9e0 line 169
If you're using JRuby and want to avoid paying the startup cost twice (once for Rake and then once for the subprocess that Rake starts), just use that command.
Here is my entire
rakefile
, which I put in my top directory:To run all my test files at once, I just type
rake
. That's it!Make sure to have
require 'minitest/autorun'
at the top of each of your Minitest files. Dir.glob definitely DOES work with Minitest.To get pretty, colored Minitest output, with names of all my test methods, I have the file
minitest_helper.rb
in my /test directory. (Had to install the gem minitest-reporters):I just had to
require_relative './minitest_helper'
at the top of each of my test files.I realize this is a very old question, but
rake test
works for me in Rails 4.2, including files under test/ as well as test/integration/, test/unit/, etc.