Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在没有Rake的情况下运行完整的MiniTest套件?_Ruby On Rails_Ruby_Rake_Minitest - Fatal编程技术网

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

Ruby on rails 如何在没有Rake的情况下运行完整的MiniTest套件?,ruby-on-rails,ruby,rake,minitest,Ruby On Rails,Ruby,Rake,Minitest,已经看过了,这或多或少反映了我目前如何运行我的整个套件 此外,我还设置了以下rake任务: Rake::TestTask.new do |t| t.name = "spec:models" t.libs << "test" t.pattern = "spec/models/*_spec.rb" end 我怀疑Rake在每次测试执行之间都在重新加载库,这就是额外时间的原因。我是否可以验证这一点,或者在不使用Rake的情况下运行我的整个套件 顺便说一句,当我前面说“用户时间

已经看过了,这或多或少反映了我目前如何运行我的整个套件

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

Rake::TestTask.new do |t|
  t.name = "spec:models"
  t.libs << "test"
  t.pattern = "spec/models/*_spec.rb"
end
我怀疑Rake在每次测试执行之间都在重新加载库,这就是额外时间的原因。我是否可以验证这一点,或者在不使用Rake的情况下运行我的整个套件


顺便说一句,当我前面说“用户时间”时,我指的是在ruby命令前面加上
time
输出的第一个数字,以运行单个测试文件,因此
time-ruby/path/to/spec.rb
=
ruby-path/to/spec.rb 0.43s用户0.06s系统88%cpu 0.559总计

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

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

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

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

如果这对您有效,您可以随意重命名
spec.rb
文件,或者将其移动到更好的位置,或者随意更改加载路径,等等。

Hmm,这似乎只运行一个文件(我使用
ruby-Itest spec/models/*_spec.rb
的最终输出显示完成了5个测试,而运行上面的
rake spec:models
显示完成了77个测试).怎么回事?我想知道为什么Matthew的建议对我也不起作用。我想你可能需要在spec/**/_spec.rb周围加引号,否则你的shell会将它扩展到一个文件,我怀疑只有一个文件,除非你使用的shell理解这个符号。看起来所有这些注释都没有使用r的通配符语法ecursive子目录正确。
***
必须完全相同。我已经在bash和zsh中进行了测试。您是否找到了解决方案?
$:<<'spec'  # add to load path
files = Dir.glob('spec/**/*.rb') 
files.each{|file| require file.gsub(/^spec\/|.rb$/,'')}  
ruby spec.rb