10

我已经按照本教程使用 spork 加速 rspec,并且我使用的是带有 ruby​​ 1.9.2 和 rails 3.2.5 的 win7 x64 机器。一切正常,但测试仍然执行缓慢。由于操作系统不支持分叉,spork 在 Windows 上根本没有做太多事情吗?

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

我还发现了这个类似的 SO question,并观看了Corey Haines 关于快速测试的视频。我喜欢这个视频,但是当我们的工具状态(在这种情况下,由于 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...
4

4 回答 4

1

Code Shop 正在构建针对 Windows 优化的 MRI Ruby,您可以在他们的网站Github Repo上找到有关它的更多信息。

我还建议您观看有关在 Windows 上开发 Rails 应用程序的演讲

于 2012-12-21T08:27:13.070 回答
1

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

于 2013-05-09T16:15:55.290 回答
0

以前,我在使用 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

于 2012-12-27T09:55:19.967 回答
0

我会为这种事情使用linux VM...

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

于 2013-05-08T07:56:54.603 回答