代码之家  ›  专栏  ›  技术社区  ›  Ethan

为什么Ruby只运行一些测试而不运行其他测试?

  •  1
  • Ethan  · 技术社区  · 11 年前

    我正在使用此命令运行一些测试。。。

    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
    

    据我所知,移除回合和迷你测试宝石并没有改变任何事情。

    1 回复  |  直到 11 年前
        1
  •  7
  •   Steve Jorgensen    11 年前

    这个 ruby 命令将要运行的ruby文件作为其第一个参数,并使ruby程序可以使用其他参数。shell正在将glob表达式扩展为2个参数,并将它们传递给 红宝石 所以 红宝石 正在运行扩展中的第一个文件名。

    附加:

    我认为你可以用这样的东西做你想做的事。。。

    bundle exec ruby -Itest -e "Dir.glob('test/functional/*_test.rb').each{|f| require File.expand_path(f)}"