Is it possible to run a single test in MiniTest?

2020-02-07 13:59发布

I can run all tests in a single file with:

rake test TEST=path/to/test_file.rb

However, if I want to run just one test in that file, how would I do it?

I'm looking for similar functionality to:

rspec path/to/test_file.rb -l 25

14条回答
Summer. ? 凉城
2楼-- · 2020-02-07 14:48

You can pass --name to run a test by its name or a number within its name:

-n, --name PATTERN               Filter run on /regexp/ or string.

e.g.:

$ ruby spec/stories/foo_spec.rb --name 3

FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil

This flag is documented in Minitest’s README.

查看更多
祖国的老花朵
3楼-- · 2020-02-07 14:50

No gem required: ruby -Itest test/lib/test.rb --name /some_test/

Source: http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9

查看更多
Fickle 薄情
4楼-- · 2020-02-07 14:59

If you are using Turn gem with minitest, just make sure to use Turn.config.pattern option since Turn Minitest runner doesn't respect --name option in ARGs.

查看更多
爱情/是我丢掉的垃圾
5楼-- · 2020-02-07 15:00

Have you tried:

ruby path/to/test_file.rb --name test_method_name
查看更多
Rolldiameter
6楼-- · 2020-02-07 15:00

I'm looking for similar functionality to:

rspec path/to/test_file.rb -l 25

There is a gem that does exactly that: minitest-line.

gem install minitest-line
ruby test/my_file -l 5

from https://github.com/judofyr/minitest-line#minitest-line

查看更多
叛逆
7楼-- · 2020-02-07 15:01

This is one of the things that bother me about the string name definition in tests.

When you have:

def test_my_test
end

you always know how your test is named so you can execute it like this:

ruby my_test -n test_my_test

But when you have something like:

it "my test" do
end

you are never sure how this test is really named internally so you can not use the -n option just directly.

To know how this test is named internally you only have an option: execute the whole file to try to figure out looking in the logs.

My workaround is (temporally) add something to the test name very unique like:

it "my test xxx" do
end

and then use the RegEx version of the '-n' parameter like:

ruby my_test.rb -n /xxx/
查看更多
登录 后发表回答