我正在使用此命令运行一些测试......
bundle exec ruby -Itest test/functional/*.rb
在我的test/functional
目录中,我有两个文件......
file_sets_controller_test.rb
user_sessions_controller_test.rb
使用上面的命令,file_sets_controller_test.rb
中的测试全部运行,但user_sessions_controller_test.rb
中的测试完全没有运行 - 没有报告错误或其他输出。
但是,我可以直接运行该文件没问题,用这个......
bundle exec ruby -Itest test/functional/user_sessions_controller_test.rb
工作正常。
我知道另一个选择是使用rake test functionals
,但与直接运行相比,这是非常慢的。
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin11.4.2]
Rails 3.2.12
这是我的Gemfile的一部分...
group :development, :test do
gem 'ansi'
gem 'turn'
gem 'minitest'
gem 'minitest-matchers'
end
这是我的test_helper.rb
...
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require 'turn/autorun'
Turn.config.ansi = true
require 'minitest/autorun'
class ActiveSupport::TestCase
fixtures :all
end
据我所知,删除Turn和Minitest宝石不会改变任何内容。
答案 0 :(得分:7)
ruby
命令将ruby文件作为其第一个参数运行,并为ruby程序提供其他参数。 shell正在将glob表达式扩展为2个参数并将它们传递给ruby
,因此ruby
正在扩展中运行第一个文件名。
其他:
我认为你可以用......之类的东西做你想做的事。
bundle exec ruby -Itest -e "Dir.glob('test/functional/*_test.rb').each{|f| require File.expand_path(f)}"