Rails 3 Minitest测试加载速度非常慢

时间:2014-04-30 18:41:37

标签: ruby-on-rails-3 minitest

我接管使用Minitest和Capybara进行测试的旧Rails 3.2应用程序,测试速度令人难以忍受。使用rake test运行完整的测试套件需要7分钟才能运行,并且很长一段时间用于等待加载某些内容(没有测试实际运行)。更糟糕的是,出于某种原因,rake test命令似乎连续运行3个独立的测试套件,每个测试套件在基本Rails环境之后需要相同的30-45秒等待时间已经装好了。

在尝试了一些应用程序预加载器之后,我确定Rails应用程序本身只需要大约15秒来加载。另外30-45秒(第3次)用于加载test_helper.rb中的内容。

我在网上找到了建议,以检查Bundler加载我所有宝石需要多长时间。但当我为此运行基准测试时,我的宝石并没有出现问题。

最后,我在 test_helper.rb 中做了一些基准测试,并发现以下行负责所有这些延迟。我知道我在Rspec中看过这个命令,而且我从来不知道执行它需要花费一秒钟左右的时间。

ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)

我的问题:

  1. 上述内容是做什么的?
  2. 这与加载Rails环境和我的应用程序没有任何关系,对吗? (请注意,即使我使用像Spring这样的预加载器,上面的行也需要大约30秒才能执行。)
  3. 你能否就如何弄清楚加载这么长时间的内容给出任何建议,理想的是减少等待时间或允许预加载?

1 个答案:

答案 0 :(得分:0)

  
      
  1. 上述内容是做什么的?
  2.   
  3. 这与加载Rails环境和我的应用程序没有任何关系,对吗? (请注意,即使我使用像Spring这样的预加载器,上面的行也需要大约30秒才能执行。)
  4.   

它加载Rails应用程序和特定于环境的配置。如果您不了解有关您的应用程序/环境以及您如何使用Spring的更多信息,我实际上无法告诉您可能需要花费多长时间。

  
      
  1. 你能否就如何弄清楚加载这么长时间的内容给出任何建议,理想的是减少等待时间或允许预加载?
  2.   

我不久前在我的博客上写了这样的东西。很多文章都是关于为Minitest输出着色,但也有一些关于找到慢速运行测试的信息。

http://chriskottom.com/blog/2014/06/dress-up-your-minitest-output/