我可以在一个文件中运行所有测试:
rake test TEST=path/to/test_file.rb
但是,如果我只想在该文件中运行一个测试,我该怎么做呢?
我正在寻找类似的功能:
rspec path/to/test_file.rb -l 25
你有没有试过:
ruby path/to/test_file.rb --name test_method_name
有两种方法:
Rake::TestTask
Rake::TestTask(来自rake 0.8.7)理论上能够通过"TESTOPTS=blah-blah"命令行选项将额外的选项传递给MiniTest::Unit,例如:
"TESTOPTS=blah-blah"
MiniTest::Unit
% rake test TEST=test/test_foobar.rb TESTOPTS="--name test_foobar1 -v"
在实践中,选项--name(测试名称的过滤器)将不起作用,因为rake的内部结构。为了解决这个问题,你需要在Rakefile中写一个小猴子补丁:
--name
# overriding the default rake tests loader class Rake::TestTask def rake_loader 'test/my-minitest-loader.rb' end end # our usual test terget Rake::TestTask.new {|i| i.test_files = FileList['test/test_*.rb'] i.verbose = true }
这个补丁需要你创建一个文件test/my-minitest-loader.rb:
test/my-minitest-loader.rb
ARGV.each { |f| break if f =~ /^-/ load f }
要打印Minitest的所有可能选项,请键入
% ruby -r minitest/autorun -e '' -- --help
这是测试中string name definition让我困扰的事情之一。
string name definition
当你有:
def test_my_test end
你总是知道你的测试是如何命名的,所以你可以像这样执行它:
ruby my_test -n test_my_test
但当你有这样的东西:
it "my test" do end
你永远不会确定这个测试在内部是如何命名的,所以你不能直接使用-n选项。
-n
要了解这个测试在内部是如何命名的,您只有一个选择:执行整个文件以尝试在日志中查找。
我的解决方法是(暂时地)在测试名中添加一些非常独特的东西,比如:
it "my test xxx" do end
然后使用` -n'形参的正则表达式版本,例如:
ruby my_test.rb -n /xxx/
我正在寻找类似于rspec path/to/file的功能。Rb -l 25
使用尼克·夸兰托的“m"宝石,你可以说:
m spec/my_spec.rb:25
命令应该是:
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
如果你正在使用带有minitest的Turn gem,请确保使用Turn.config.pattern选项,因为Turn minitest运行器不尊重arg中的——name选项。
Turn.config.pattern
不需要gem: ruby -Itest test/lib/test.rb --name /some_test/ < / p >
ruby -Itest test/lib/test.rb --name /some_test/
来源:http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
你可以用它来运行一个文件:
rake test TEST=test/path/to/file.rb
我也用过
ruby -I"lib:test" test/path/to/file.rb
为了更好的显示。
你可以通过--name来通过它的名称或它名称中的数字来运行测试:
-n, --name PATTERN Filter run on /regexp/ or string.
例如:
$ ruby spec/stories/foo_spec.rb --name 3 FAIL (0:00:00.022) test_0003_has foo Expected: "foo" Actual: nil
这个标志被记录为在Minitest的README中。
如果你正在使用MiniTest和Rails 5+,最好的方法是在一个文件中运行所有测试:
bin/rails test path/to/test_file.rb
对于单个测试(例如在第25行):
bin/rails test path/to/test_file.rb:25
看到http://guides.rubyonrails.org/testing.html#the-rails-test-runner
我正在寻找类似的功能: / / test_file rspec路径。Rb -l 25
/ / test_file rspec路径。Rb -l 25
有一个宝石可以做到这一点:minitest-line。
minitest-line
gem install minitest-line ruby test/my_file -l 5
从https://github.com/judofyr/minitest-line#minitest-line
我使用ruby /path/to/test -n /distinguishable word/
ruby /path/to/test -n /distinguishable word/
distinguishable word
以下将会起作用
def test_abc end test "hello world" end
这可以通过
bundle exec ruby -I test path/to/test -n test_abc bundle exec ruby -I test path/to/test -n test_hello_word
我在Rails版本4.2.11.3和Ruby版本2.4.7p357
下面一个对我有用。
ruby -Itest <relative_minitest_file_path> --name /<test_name>/
安装gem minitest-focus并使用关键字focus on test/spec,如下所示,只运行特定的测试。
focus def test end focus it "test" do end
这将不需要传递任何命令行参数。