如何在没有Rake的情况下运行完整的MiniTest套件?

已经看过这个问题了,或多或少反映了我目前运行整个套件的方式。

另外,我设置了以下rake任务:

Rake::TestTask.new do |t| t.name = "spec:models" t.libs << "test" t.pattern = "spec/models/*_spec.rb" end 

但是我注意到当我使用time rake spec:models运行它time rake spec:models ,它在大约2.36秒内完成。 如果我使用ruby /path/to/spec.rb运行该目录中的所有单独测试(目前所有测试都与ActiveRecord隔离 – 没有持久性,那么超快),他们的累计总用户时间是2.36秒,但我我还注意到,每个文件从开始到结束需要0.4个用户秒执行,MiniTest报告的实际“测试”时间要快得多(这样我的整个套件在加载依赖后,应该在低于0.15的情况下执行)是秒,而不是2.36秒)。

示例(对于一个spec文件):

 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在每次测试的执行之间重新加载库,这就是额外的时间。 无论如何我可以validation这一点,或者在不使用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

在项目的顶级目录中创建文件spec.rb

 $:<<'spec' # add to load path files = Dir.glob('spec/**/*.rb') files.each{|file| require file.gsub(/^spec\/|.rb$/,'')} 

运行:

 ruby spec.rb 

如果这适合您,您可以根据需要重命名spec.rb文件,或将其移动到更好的位置,或根据需要更改加载路径等。

这将在spec目录和子目录中运行任何测试,文件名末尾带有_spec.rb:

 ruby -Itest spec/**/*_spec.rb