Jos*_*ehl 158 ruby minitest ruby-on-rails-3
我可以在一个文件中运行所有测试:
rake test TEST=path/to/test_file.rb
Run Code Online (Sandbox Code Playgroud)
但是,如果我想在该文件中只运行一个测试,我该怎么做?
我正在寻找类似的功能:
rspec path/to/test_file.rb -l 25
Run Code Online (Sandbox Code Playgroud)
jdu*_*uan 200
命令应该是:
% rake test TEST=test/test_foobar.rb TESTOPTS="--name=test_foobar1 -v"
Run Code Online (Sandbox Code Playgroud)
And*_*imm 145
你有没有尝试过:
ruby path/to/test_file.rb --name test_method_name
Run Code Online (Sandbox Code Playgroud)
fgu*_*len 50
这是string name definition在测试中困扰我的事情之一.
当你有:
def test_my_test
end
Run Code Online (Sandbox Code Playgroud)
你总是知道你的测试是如何命名的,所以你可以像这样执行它:
ruby my_test -n test_my_test
Run Code Online (Sandbox Code Playgroud)
但是当你有类似的东西:
it "my test" do
end
Run Code Online (Sandbox Code Playgroud)
你永远不确定这个测试是如何在内部命名的,所以你不能-n直接使用该选项.
要知道如何在内部命名此测试,您只能选择:执行整个文件以尝试查找日志.
我的解决方法是(暂时)添加一些非常独特的测试名称:
it "my test xxx" do
end
Run Code Online (Sandbox Code Playgroud)
然后使用'-n'参数的RegEx版本,如:
ruby my_test.rb -n /xxx/
Run Code Online (Sandbox Code Playgroud)
ran*_*mor 49
无需宝石:
ruby -Itest test/lib/test.rb --name /some_test/
资料来源:http://blog.arvidandersson.se/2012/03/28/minimalicous-testing-in-ruby-1-9
Ell*_*ler 43
我正在寻找与rspec path/to/file.rb -l 25类似的功能
对!使用Nick Quaranto的"m"宝石.有了它你可以说:
m spec/my_spec.rb:25
Run Code Online (Sandbox Code Playgroud)
Der*_*ill 26
如果您使用MiniTest和Rails 5,在单个文件中运行所有测试的最佳方法是:
bin/rails test path/to/test_file.rb
Run Code Online (Sandbox Code Playgroud)
对于单个测试(例如,在第25行):
bin/rails test path/to/test_file.rb:25
Run Code Online (Sandbox Code Playgroud)
请参阅http://guides.rubyonrails.org/testing.html#the-rails-test-runner
tuh*_*haj 22
您可以使用它来运行单个文件:
rake test TEST=test/path/to/file.rb
Run Code Online (Sandbox Code Playgroud)
我也用过
ruby -I"lib:test" test/path/to/file.rb
Run Code Online (Sandbox Code Playgroud)
为了更好的显示.
Ale*_*sky 11
有两种方法可以做到:
Rake::TestTask目标使用不同的测试加载器.Rake::TestTask(来自耙0.8.7)理论上是能够通过额外的选项,以MiniTest::Unit与"TESTOPTS=blah-blah"命令行选项,例如:
% rake test 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
}
Run Code Online (Sandbox Code Playgroud)
此修补程序要求您创建文件test/my-minitest-loader.rb:
ARGV.each { |f|
break if f =~ /^-/
load f
}
Run Code Online (Sandbox Code Playgroud)
要打印Minitest的所有可能选项,请键入
% ruby -r minitest/autorun -e '' -- --help
你实际上可以只运行名称甚至数字:
-n, --name PATTERN Filter run on /regexp/ or string.
Run Code Online (Sandbox Code Playgroud)
例如:
$ ruby spec/stories/foo_spec.rb --name 3
FAIL (0:00:00.022) test_0003_has foo
Expected: "foo"
Actual: nil
Run Code Online (Sandbox Code Playgroud)
请参阅:https://github.com/seattlerb/minitest
| 归档时间: |
|
| 查看次数: |
53707 次 |
| 最近记录: |