我的测试套件需要 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/