耙子测试运行速度很慢

Org*_*cat 11 ruby windows unit-testing rubymine

经过一些测试后,我确信我的设置(窗口,rubymine和最新的ruby版本)都有问题.我现在的时代是:

Finished tests in 14.289817s, 0.0700 tests/s, 0.3499 assertions/s.

1 tests, 5 assertions, 0 failures, 0 errors, 0 skips

Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)

有5个非常简单的测试(只检查空字段上的验证是否有效).这5个单元测试的总时间为160秒,超过2分钟.

我该怎么做才能提高这个速度?

以下是测试:

require 'test_helper'

class ItemTest < ActiveSupport::TestCase
  test 'item attributes must not be empty' do
    item = Item.new
    assert item.invalid?
    assert item.errors[:name].any?
    assert item.errors[:description].any?
    assert item.errors[:image_url].any?
    assert item.errors[:rating].any?
  end
end
Run Code Online (Sandbox Code Playgroud)

Dar*_*tle 6

你的问题是Windows.我们在Windows上使用JRuby,它实际上比Windows上的RubyInstaller(mingw)ruby运行得更快但是在运行测试套件或启动rails服务器时我们确实看到非常慢的结果.由于加载了Rails环境,单次测试运行大约需要1分钟.你有几个选择:

  1. 切换到linux/osx
  2. 使用spork可以为测试预先加载几个rails环境.请注意,这并不完美,但会大大减少您的时间.使用此选项,您可能希望使用minitest或rspec,我无法使用testunit在Windows上运行spork.使用spork,您应该能够将单次测试运行时间降低到大约10秒.
  3. 编写尽可能多的测试以在Rails之外运行,换句话说不需要Rails堆栈.这将是非常快的,您应该能够在几秒钟内运行测试,但正如您猜测的那样,很难在rails之外测试很多东西(控制器,视图).虽然对于已经分解成已经不需要任何东西的模块的功能,但工作正常.

祝好运!