ruby-on-rails - 为什么我的 Rails 测试这么慢?

标签 ruby-on-rails unit-testing

我的测试套件需要 5 秒钟才能启动是否正常?即使在运行一个空套件时,它仍然需要这么长时间。是因为每次运行都会启动一个新的 rails 实例吗?如果是这样,无论如何要保持它的持久性?

例子:

rlepidi@rlepidi:~/projects/rails/my_project$ time rake test
/usr/bin/ruby1.9.1 -I"lib:test" "/var/lib/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/unit/release_test.rb" 
Loaded suite /var/lib/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader
Started

Finished in 0.000181867 seconds.

0 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
0% passed

real    0m4.173s
user    0m3.820s
sys 0m0.288s

如您所见,这个空测试确实很快,但由于某种原因仍然有 4 秒的开销。我正在将 Test::Unit 与 Shoulda 一起使用。

最佳答案

测试速度瓶颈是 Rails 加载环境所需的时间。运行脚本/控制台并查看将您加载到您的环境中需要多长时间......它应该是一样的。

如果您拥有足够大的代码库,其中包含许多插件和 gem,加载时间可能高达 1 分钟!!
如果你像我一样停止运行测试 b/c 你厌倦了等待 30 秒只是为了测试一个小的变化,你需要运行一个像 spec_server 这样的测试服务器,或者更好:spork!

你会发现用 spec_server 处理类缓存可能会有一些奇怪的问题,这就是我更喜欢 spork 的原因。

关于ruby-on-rails - 为什么我的 Rails 测试这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580880/

相关文章:

html - Ruby on Rails - 导入 Bootstrap 错误 "File not found or unreadable"

ruby-on-rails - 使用 Ruby 将数字转换为单词?

ios - 通过命令行运行单元测试 - Swift Project with cocoaPods

python - 恢复模式下的 etree.XMLParser 是否仍会抛出解析错误?

java - 如何在执行junit时模拟某个方法?

java - 单元测试中是否使用了 Spring Framework?

javascript - 添加列表项客户端

mysql - 保存/序列化/转储已删除的对象,然后再次恢复

ruby-on-rails - 在可安装的 Rails 引擎中使用 rails-assets-angular gem

java - 如何使用 PowerMock 模拟 FileInputStream?