题目如下。
ruby test/functionals/whatevertest.rb不能工作,需要我将所有的require 'test_helper'
替换为require File.dirname(__FILE__) + '/../test_helper'
。由于大多数测试模板都存在这样的问题,因此我想看看是否有什么方法可以绕过它。
题目如下。
ruby test/functionals/whatevertest.rb不能工作,需要我将所有的require 'test_helper'
替换为require File.dirname(__FILE__) + '/../test_helper'
。由于大多数测试模板都存在这样的问题,因此我想看看是否有什么方法可以绕过它。
ruby -I test test/functional/whatevertest.rb
要运行一个具体的功能性
测试,执行:
ruby -I test test/functional/whatevertest.rb -n test_should_get_index
只需在测试名称中使用下划线代替空格(如上所示),或按以下方式引用标题:
ruby -I test test/functional/whatevertest.rb -n 'test should get index'
请注意,在上面的示例中,对于功能测试
,只需将其替换为单元测试
。如果您正在使用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
bundle exec rake test:functionals
只执行功能测试,这是复数形式。注意:运行所有单元测试也是一样的..只需将functionals
替换为units
即可。 - user664833rails 3.0.7
,并创建了一个新的“depot”应用程序(rails new depot
),cd depot
,bundle install
(安装sqlite3),rails g scaffold User name:string
,bundle exec rake db:migrate
,RAILS_ENV=test bundle exec rake db:migrate
,然后我使用ruby 1.9.2p290
运行了以下测试,并且它们都成功了:ruby -I test test/unit/user_test.rb
和ruby -I test test/unit/user_test.rb -n test_the_truth
以及ruby -I test test/unit/user_test.rb -n 'test_the_truth'
。测试的实际名称是“the truth”。此外,我在应用程序的根目录中。 - user664833test_the_truth
。 - B Seven请尝试以下命令:
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
标题问题的答案是:
ruby unit/post_test.rb -n selected_test # use to run only one selected test
但是对于问题的内容,tvanfosson 给出了一个很好的答案。
<internal:lib/rubygems/custom_require>:29:in 'require': no such file to load -- test_helper (LoadError)
它能用于功能测试吗? - B Seven在无数个小时的探索之后,我终于找到了解决方法(在Rails 3.0.7中):
ruby -I test test/functional/users_controller_test.rb -n "/the_test_name/"
请注意,这仅适用于命令中的下划线 (_)。它无法使用空格!
将测试定义为带有空格的内容:
test "the test name" do
这个解决方案使用模式匹配,所以你可以使用测试名称的一部分。如果测试是“应该执行foo”,则以下任何一个也可以使用。
ruby -I test test/functional/alerts_controller_test.rb -n "/foo/"
ruby -I test test/functional/alerts_controller_test.rb -n "/do_foo/"
ruby -I test test/functional/alerts_controller_test.rb -n "/do foo/"
ruby -v ruby 1.9.3p484
和 >> Rails::version => "2.3.18"
。 - mswieboda2和3的最常规方法是:
ruby -I test test/functional/your_test_file.rb