【问题标题】:Rspec Still Slow On Windows Even With Spork即使使用 Spork,Rspec 在 Windows 上仍然很慢
【发布时间】:2012-06-19 09:42:48
【问题描述】:

我关注了this tutorial on speeding up rspec with spork,我在一个装有 ruby​​ 1.9.2 和 rails 3.2.5 的 win7 x64 机器上。一切正常,但测试仍然执行缓慢。由于操作系统不支持分叉,spork 在 Windows 上根本没有做太多事情吗?

我还能做些什么来加快速度吗?

我也found this similar SO question,看了video by Corey Haines on fast testing。我喜欢这个视频,但是当我们的工具状态(在这种情况下,由于 Rails 启动时间导致的缓慢测试)决定了我们如何构建代码时,我不禁感到有些不对劲。如果不存在那种缓慢的启动时间,那还需要他的方法吗?另一方面,由于测试需要 10 到 30 秒的时间来运行,所以 TDD 的许多好处都失去了,我也看到了他的观点。

如果相关,这里是 spork 的控制台输出,因为 rspec 被执行了几次:

    $ bundle exec spork
Using RSpec
  -- Starting to fill pool...
     Wait until at least one slave is provided before running tests...
  ** CTRL+BREAK to stop Spork and kill all ruby slave processes **
Spork is ready and listening on 8989!
  -- Rinda Ring Server listening for connections...

   -- build slave 1...
Preloading Rails environment
   -- build slave 2...
Preloading Rails environment
Loading Spork.prefork block...
Loading Spork.prefork block...
Running tests with args ["--color"]...
  --> DRb magazine_slave_service: 1 provided...
  --> DRb magazine_slave_service: 2 provided...
  <-- take tuple(2); slave.run...
   -- (2);run done
Done.

   -- build slave 2...
Preloading Rails environment
Loading Spork.prefork block...
Running tests with args ["--color"]...
  <-- take tuple(1); slave.run...
   -- (1);run done
Done.

   -- build slave 1...
Preloading Rails environment
Loading Spork.prefork block...
  --> DRb magazine_slave_service: 2 provided...

【问题讨论】:

  • 有多少示例需要 30 秒才能运行? Spork 不会帮助您加快测试时间。这将使它们在更短的时间内运行。
  • 我说的是一般情况。在我的示例中,只有一个测试,它本身在几分之一秒内执行,但实际运行需要 5-10 秒,包括 Rails 加载时间
  • 在 windows 上运行 spork 没用,你为什么要这样做?没有任何东西可以帮助你,Windows 上的 ruby​​ 很慢,而且大多数工具都只有 linux/mac。如果你决定继续使用 Windows,你只需要接受 Ruby 在那里相当糟糕的事实。
  • 所以,如果有代码让您的 TDD 很痛苦,这通常意味着代码是错误的,您需要改进它。例如,如果您在测试中不使用任何特定于 rails 的东西,为什么需要 rails env 呢?这很复杂,但这是一个权衡取舍的世界。我们只需要确保我们被吸引到一个让我们富有成效的地方。但是请不要使用 windows 进行 Ruby 开发(你也可以尝试 JRuby);)
  • Windows 并没有那么糟糕,除了速度,这确实是我看到的 RoR 的唯一主要障碍。我现在在 Linux 上工作,那些 selenium 测试是如此缓慢,以至于我不禁想像它们将如何在 Windows 上运行。但是 Windows 对学习者来说仍然很好,我确实完成了一次关于 Windows 的教程,这种体验使得在其他环境中的设置变得更加容易。

标签: ruby-on-rails rspec spork


【解决方案1】:

The Code Shop 正在构建一个针对 Windows 优化的 MRI Ruby,您可以在他们的 Website 或他们的 Github Repo 上找到更多关于它的信息。

我还建议您观看 this talk 关于在 Windows 上开发 Rails 应用程序

【讨论】:

    【解决方案2】:

    尝试查看http://railscasts.com/episodes/413-fast-tests。这显示了许多可以显着提高测试套件速度的不同工具!

    【讨论】:

      【解决方案3】:

      以前,在使用 Windows 运行 RSPEC 测试时,我和其他人一样有耐心!做 rake(s) 花费了我太多的时间,而且它不再那么健康了。由于在 Windows 中的开发是如此痛苦,因此交付物有所延迟。这就是事实。这就是我转向 Linux 的原因。但有时,在使用 Linux 时仍然存在问题(安装一些东西的麻烦等等)。我一直保持耐心,直到我切换到更好的 MAC。

      如果您确实始终如一地使用 Windows 进行 ROR,那么如果要测试的模块很多,那么运行测试会很慢。

      我也有点确定 Selenium 测试在 Windows 中将是一场灾难。

      但是,您也可以尝试添加一些其他内容,例如使用 GUARD(为了更快地执行测试脚本),您不必重复输入 rspec spec

      见:https://github.com/guard/guard

      对于 spork,我也遇到了一个关于它的错误(之前)......我正在使用 Linux 测试一些规范文件,然后它太慢了,我真的很讨厌使用它。

      这就是现实。

      看看我是如何配置 SPORK 来为 rspec 工作的:

      spec_helper.rb

      见:https://github.com/xirukitepe/animelist/blob/master/spec/spec_helper.rb

      【讨论】:

        【解决方案4】:

        我会使用 linux 虚拟机来做这种事情......

        我设法通过 RSpec 获得的最大测试速度提升是确保它永远不会访问数据库,除非它绝对必须这样做。

        【讨论】:

          猜你喜欢
          • 2012-01-19
          • 1970-01-01
          • 2019-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-23
          • 1970-01-01
          • 2021-08-01
          相关资源
          最近更新 更多