如题.
红宝石测试/函/ whatevertest.rb不工作,这需要我所有更换require 'test_helper'
到require File.dirname(__FILE__) + '/../test_helper'
.由于某些原因,大多数测试模板都存在这样的问题,所以我宁愿看看是否存在可以绕过它的黑客攻击.
以下答案基于:如何从rails测试套件运行单个测试?(堆栈溢出)
但非常简短,这是答案:
ruby -I test test/functional/whatevertest.rb
对于特定 functional
测试,请运行:
ruby -I test test/functional/whatevertest.rb -n test_should_get_index
只需将下划线放在测试名称中的空格位置(如上所示),或者引用标题如下:
ruby -I test test/functional/whatevertest.rb -n 'test should get index'
请注意,对于unit
测试只需更换functional
用unit
在上面的例子.如果您使用bundler管理应用程序的gem依赖项,则必须bundle exec
按如下方式执行测试:
bundle exec ruby -I test test/unit/specific_model_test.rb bundle exec ruby -I test test/unit/specific_model_test.rb -n test_divide_by_zero bundle exec ruby -I test test/unit/specific_model_test.rb -n 'test divide by zero'
最重要的是,请注意,-n
切换的参数是测试的名称,并且前面加上"test"一词,带有空格或下划线,具体取决于您是否引用了名称.原因是这test
是一种方便的方法.以下两种方法是等效的:
test "should get high" do assert true end def test_should_get_high assert true end
...并且可以执行以下任一操作(它们是等效的):
bundle exec ruby -I test test/integration/misc_test.rb -n 'test should get high' bundle exec ruby -I test test/integration/misc_test.rb -n test_should_get_high
试试这个:
ruby -Ilib:test test/functionals/whatevertest.rb
在Linux上?为什么不试试(cd test && ruby functionals/whatevertest.rb)
.注意,括号很重要,否则您当前的目录将更改为子目录.它的作用是fork
另一个shell,更改到其中的子目录,然后运行测试.
如果你在Rails 4上,那么rake支持文件/目录参数.例:
rake test test/unit/user_test.rb rake test test/unit