在Rails 5中的自定义测试文件夹中运行测试

时间:2018-01-26 16:05:28

标签: ruby-on-rails ruby-on-rails-5

当我想运行所有模型测试时,我们

rails test:models

如果我同样希望运行位于名为service_objects的文件夹中的测试(在test文件夹中) - 那么所需的步骤是什么?

借助multiplesources的灵感,我在lib/tasks尝试了以下内容:

namespace :test do
  Rails::TestTask.new(classes: 'test:prepare') do |t|
    t.pattern = 'test/service_objects/**/*_test.rb'
  end
end

但是运行rails test:service_objects会返回以下错误消息:

  

NameError:未初始化的常量Rails :: TestTask

1 个答案:

答案 0 :(得分:3)

使用Rails :: TestUnit :: Runner替换Rails :: TestTask,如下面的文件所示,顶部显示require路径。

然后只在test / focused目录中运行测试,你可以调用

rails test:focused

并在测试目录中运行所有测试除了test / long_running中的那些,你可以调用

rails test:without_long_running

使用Rails 5.1.6进行测试

新的Rails 5测试运行器确实有一些非常有用的功能,但有时你还需要更多的控制。

# lib/tasks/test_tasks.rake

require "rails/test_unit/runner"

namespace :test do
  task :focused => "test:prepare" do
    $: << "test"
    test_files = FileList['test/focused/*_test.rb']
    Rails::TestUnit::Runner.run(test_files)
  end

  task :without_long_running_tests => "test:prepare" do
    $: << "test"
    test_files = FileList['test/**/*_test.rb'].exclude('test/long_running/**/*_test.rb')
    Rails::TestUnit::Runner.run(test_files)
  end
end

应该在2015年5月发布jonatack:https://github.com/rails/rails/issues/19997