【问题标题】:Rails 3 Minitest tests load very slowlyRails 3 Minitest 测试加载非常缓慢
【发布时间】:2014-04-30 18:41:37
【问题描述】:

我正在接管一个旧的 Rails 3.2 应用程序,该应用程序使用 Minitest 和 Capybara 进行测试,测试速度非常慢。使用rake test 运行完整的测试套件需要 7 分钟以上的时间,其中很大一部分时间用于等待加载(实际上没有运行测试)。更糟糕的是,由于某种原因,rake test 命令似乎连续运行 3 个单独的测试套件,每个测试套件都需要相同的 30-45 秒等待时间基本 Rails 环境已加载.

在尝试了一些应用程序预加载器后,我发现 Rails 应用程序本身只需大约 15 秒即可加载。另外 30-45 秒(乘以 3)用于加载 test_helper.rb 中的内容。

我在网上找到了一些建议,以检查 Bundler 加载我所有的 gem 需要多长时间。但是当我为此运行基准测试时,我的 gem 似乎并不是问题所在。

最后,我在 test_helper.rb 中进行了一些基准测试,发现以下行是造成所有这些延迟的原因。我知道我在 Rspec 中看到过这个命令,但我从来不知道它需要超过一秒左右的时间来执行。

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

我的问题:

  1. 以上行有什么作用?
  2. 这与加载 Rails 环境和我的应用程序没有任何关系,对吗? (请注意,即使我使用像 Spring 这样的预加载器,上述行也需要大约 30 秒才能执行。)
  3. 您能否给我一些建议,告诉我如何找出加载时间过长的原因,并在理想情况下减少等待时间或允许预加载?

【问题讨论】:

    标签: ruby-on-rails-3 minitest


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

    它加载 Rails 应用程序和特定于环境的配置。在不了解您的应用程序/环境以及您如何使用 Spring 的情况下,我真的无法告诉您可能需要这么长时间。

    1. 您能否给我一些建议,告诉我如何找出加载时间过长的原因,并在理想情况下减少等待时间或允许预加载?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多