如何运行一个完整的MINITEST套件无佣金?(How to run a full MiniTest

2019-07-29 09:16发布

在看着这个问题已经,而且或多或少镜子我如何运行目前我的整个套件。

另外,我设置以下耙子任务:

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秒,但我M还注意到,而每个文件需要0.4秒,用户从开始到结束执行,实际的“测试”时间MINITEST报道很多,要快得多(例如,我的整个套件,装载depencies后,应在执行小于0.15〜 ISH秒,不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

我怀疑耙每个测试的执行之间重装库,而这占了额外的时间。 反正我有可以验证这一点,使用或不使用耙运行我的整个套件?

顺便说一句,当我说“用户时间”前面,我指的是通过预先输出的第一个数字time我的红宝石命令运行单个测试文件,所以time ruby /path/to/spec.rb = ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total

Answer 1:

创建文件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你喜欢的文件,或将其移动到一个更好的位置,或者改变负载路径,只要你喜欢,等等。



Answer 2:

这将运行在规范目录及子目录与文件名的最后一个_spec.rb任何测试:

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


文章来源: How to run a full MiniTest suite without Rake?