我可以使用以下命令在一个文件中运行所有测试:
rake test TEST=path/to/test_file.rb
但是,如果我只想在该文件中运行一个测试,该怎么办?
我正在寻找与以下类似的功能:
rspec path/to/test_file.rb -l 25
我可以使用以下命令在一个文件中运行所有测试:
rake test TEST=path/to/test_file.rb
但是,如果我只想在该文件中运行一个测试,该怎么办?
我正在寻找与以下类似的功能:
rspec path/to/test_file.rb -l 25
Answers:
m
目前无法使用此Minitest 5.0。
该命令应为:
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
TESTOPTS=...
了
-v
办?
你有没有尝试过:
ruby path/to/test_file.rb --name test_method_name
specify {}
?那些只是显示为test_0001_anonymous
...,test_0001_anonymous
如果在多个describe块中使用相同的语法,则可能会有多个s。在这种环境下运行单个测试的任何建议吗?
cannot load such file -- test_helper
。
ruby -Itest path/to/tc_file.rb --name test_method_name
类似stackoverflow.com/a/15714985/327786
bundle exec ruby -I lib path/to --name test_fit
无需宝石:
ruby -Itest test/lib/test.rb --name /some_test/
资料来源:http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
这是困扰string name definition
测试的一件事。
当你有:
def test_my_test
end
您总是知道测试的名称,因此您可以像这样执行它:
ruby my_test -n test_my_test
但是当你有类似的东西:
it "my test" do
end
您永远不确定该测试在内部如何真正命名,因此您不能-n
直接使用该选项。
要知道该测试的内部命名方式,您只有一个选择:执行整个文件以尝试找出日志。
我的解决方法是(暂时)在测试名称中添加一些非常独特的内容,例如:
it "my test xxx" do
end
然后使用RegEx版本的'-n'参数,例如:
ruby my_test.rb -n /xxx/
__method__
在当前正在执行的方法(在本例中为测试)的上下文中进行调用来进行检查。当前的实现结果类似于"does not break my stuff".gsub(" ", "_").prepend("test_")
。然后运行,例如ruby -Itest test/integration/stuff_flow_test.rb --name test_does_not_break_my_stuff
。
如果您将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
有两种方法可以做到这一点:
Rake::TestTask
目标以使用其他测试加载器。Rake::TestTask
(从rake 0.8.7起)从理论上讲可以将其他选项传递MiniTest::Unit
给"TESTOPTS=blah-blah"
命令行选项,例如:
%抽水测试TEST = test / test_foobar.rb TESTOPTS =“-name test_foobar1 -v”
实际上,--name
由于rake内部原因,该选项(测试名称的过滤器)不起作用。要解决此问题,您需要在Rakefile中编写一个小猴子补丁:
# 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
:
ARGV.each { |f|
break if f =~ /^-/
load f
}
要打印Minitest的所有可能选项,请键入
%ruby -r minitest / autorun -e''--帮助
rake
(0.9.2)上可以正常工作,并且不需要猴子补丁。
TESTOPTS="--name test_foobar"
不起作用,但TESTOPTS="--name=test_foobar"
可以。
您可以通过--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文件中。
我正在寻找与以下类似的功能:
rspec路径/到/test_file.rb -l 25
有一个宝石可以做到这一点:minitest-line
。
gem install minitest-line
ruby test/my_file -l 5
我用 ruby /path/to/test -n /distinguishable word/
编辑:
-n
是的简写--name
。distinguishable word
可以是您放入测试说明中的任何字符串,我通常使用一些我知道不会出现在其他测试说明中的随机词。
-n
参数是什么意思?
--name
。只是方便的事情。对于/ regex /尤其有用,我通常只是在测试名称中放入一些随机单词(我知道其他测试的描述中不会出现该单词)。
以下将起作用
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 test path/to/test_file.rb:25
请参阅@Derek_Hill ans-摘自guides.rubyonrails.org/testing.html#the-rails-test-runner