我想分享我的发现并听取其他人关于减少 Rails 应用程序集成测试执行时间的成功和失败尝试(无论是“普通”测试,基于 Cucumber 还是基于 RSpec)。
这个问题暗示测试涉及数据库、视图渲染,也许还有 JavaScript/AJAX。Ei 测试不会存根/模拟应用程序的慢速部分。
我想分享我的发现并听取其他人关于减少 Rails 应用程序集成测试执行时间的成功和失败尝试(无论是“普通”测试,基于 Cucumber 还是基于 RSpec)。
这个问题暗示测试涉及数据库、视图渲染,也许还有 JavaScript/AJAX。Ei 测试不会存根/模拟应用程序的慢速部分。
作者的回答。 我尝试了两件事:spork 插件和内存数据库。我的开发配置:在 Win7、Ruby 1.8.7、Rails 3、SQLite 上托管的 Ubuntu VirtualBox。
Spork插件将我的测试启动时间从 35 秒减少到 2 秒。我在这里总结步骤,但它们在 github 自述文件中描述得足够好。这篇文章还描述了如何将它与 Guard 一起使用,以确保 spork 服务器在文件更改时重新启动。
我尝试使用内存数据库来减少执行时间。在某些情况下,它们将执行时间减少了 10%,但启动时间有 2 秒的开销来创建模式。结果远远超过我可以观察到的改进。所以我为自己决定,改进是不值得的。
我还使用 RVM将 Ruby 1.8.7 替换为1.9.2。它将执行时间从 58 秒减少到 42 秒。
结论:Spork 和用 1.9.2 替换 1.8.7 可以显着改善您的 TDD 体验。