在运行了一些测试之后,我确信我的设置必须有问题(Windows,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

使用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

最佳答案

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

  • 切换到linux/osx
  • 使用spork可以为测试保持预加载几个Rails环境。请注意,这不是完美的方法,但是会大大减少您的时间。使用此选项,您可能要使用minitest或rspec,我很难让spork在带有testunit的Windows上工作。使用spork,您应该可以将单个测试运行时间缩短到大约10秒。
  • 编写尽可能多的测试以在Rails外部运行,换句话说,不需要Rails堆栈。这将非常快,您应该仅能在几秒钟内运行测试,但是您可能会猜到,很难在Rails之外测试很多东西( Controller , View )。对于已分解为不需要Rails的模块的功能,它可以完美地工作。

  • 祝你好运!

    关于ruby - rake 测试运行非常缓慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11819770/

    10-12 12:20
    查看更多