已经看过这个问题,这或多或少反映了我目前如何运行我的整个套件。
此外,我还设置了以下 rake 任务:
Rake::TestTask.new do |t|
t.name = "spec:models"
t.libs << "test"
t.pattern = "spec/models/*_spec.rb"
end
但是我注意到当我使用 运行它时time rake spec:models
,它在大约 2.36 秒内完成。如果我在该目录中运行所有单独的测试ruby /path/to/spec.rb
(目前所有测试都与 ActiveRecord 隔离 - 还没有持久性,所以超级快),它们的累积总用户时间为 2.36 秒,但我也注意到每个文件需要 0.4 个用户从开始到结束执行的秒数,MiniTest 报告的实际“测试”时间要快得多(这样我的整个套件,在加载依赖项后,应该在不到 0.15 秒的时间内执行,而不是 2.36 秒)。
示例(对于一个规范文件):
Started
11/11: 100% |======================================| Time: 00:00:00
Finished in 0.02223s
11 tests, 15 assertions, 0 failures, 0 errors, 0 skips
ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total
我怀疑 Rake 会在每次测试执行之间重新加载库,这是额外时间的原因。无论如何我可以验证这一点,或者在不使用 Rake 的情况下运行我的整个套件吗?
顺便说一句,当我之前说“用户时间”时,我指的是通过time
在我的 ruby 命令前面输出的第一个数字来运行单个测试文件,所以time ruby /path/to/spec.rb
=ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total