为什么我在Rails 3.2.1上的"rake test:units"的"启动时间"这么慢?

mak*_*dad 6 rake unit-testing testunit ruby-on-rails-3

我们正在开发一个关于Ruby 1.9.3和Rails 3.2.1的应用程序.

最近,我们的单元测试在开始时变得迟钝.调用和执行需要大约15秒.一旦我看到"执行测试:单位",在看到任何输出之前还需要10秒钟.最后,任务完成,测试只需3秒即可自行执行.

可以接受3秒的单元测试.对于BDD/TDD,25秒加载时间是不现实的.

这是我跑步时会发生的事情rake test:units --trace:

** Invoke test:units (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment 
** Execute db:test:purge
** Execute db:test:load
** Invoke db:test:load_schema (first_time)
** Invoke db:test:purge 
** Execute db:test:load_schema
** Invoke db:schema:load (first_time)
** Invoke environment 
** Execute db:schema:load
** Execute test:prepare
** Execute test:units
Run Code Online (Sandbox Code Playgroud)

我不怀疑正在加载,然后重新加载的数据库模式可能是缓慢的关键来源.但是,我没有对我们的Rakefile单元测试做任何事情.我在哪里可以看到引擎盖下真正发生的事情?

这是最重要的test/test_helper.rb:

require 'simplecov'
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  1. 注释掉simplecov,因为我们只将它用于CI服务器,而不是在开发期间(执行时间没有差别)
  2. 评论其他的东西,但这打破了测试甚至执行.我不完全确定为什么那些其他项目存在,因为我认为Rails环境将自动加载到"test"中.

关于我可以在哪里/如何戳我的头看到的任何想法?

Rails是否有可能正在运行迁移而不仅仅是schema:load?随着我们的发展,我们有大量的迁移(~30).

编辑:

我正在使用2011款Macbook Pro配备8G内存和酷睿i7 - 不要认为这是我的机器.我在这个问题上看到,在Windows上,require可能会导致问题.

我也认为固定装置可能是问题,但如果固定装置是问题,测试本身,而不是测试的加载时间,会很慢,对吗?

编辑2:

感谢pchap10k的回答,我认为它与rake无关 - 这是关于我们的Gemfile.也许我应该搜索那个区域......

pch*_*10k 2

可能是你的宝石加载缓慢。请参阅此线程,了解有关 Rails 3.x 中缓慢的 rake 加载时间的类似投诉 >慢速 Rails 堆栈