我有一个脚本可以使用require
在目录中运行所有测试;我这样做:
Dir.files.each
...
然后
require 'path'
...
我尝试使用另一个循环来运行这些测试几次,传递不同的参数。我在数组中有我的参数,然后我遍历数组,然后运行与上面相同的代码来运行目录中的所有测试。在这个循环中,我打印一行:
puts executing tests for a[i]
,下一行是运行测试集的require
。
问题是打印执行例如十次(一起打印十行),但require
仅在最后运行,仅传递数组的最后一个元素。我尝试了不同的语句,它们都运行良好,所以我不相信它是循环中的问题;我认为这是require
。我试过了load
,但没有看到任何区别。 'exec'只运行集合中的第一个测试。有什么想法吗?
更多细节:
感谢回复!系统命令更接近我想要的 - 它为我运行所有测试。
我有一个我正在尝试做的例子。 当我在传递特定参数'a'后运行脚本时,我得到以下结果:
#### Run all tests for 'a' ####
Loaded suite
............................
Finished in 220.123 seconds
如果我把我的参数放在一个数组中,例如。 ar = ['a','b','c','d'] 我得到了
#### Run all tests for 'a' ####
#### Run all tests for 'b' ####
#### Run all tests for 'c' ####
#### Run all tests for 'd' ####
Loaded suite
............................
Finished in 220.123 seconds
即。测试仅针对最后一个选项运行(d)
如果我使用'system',每个单独的文件都会单独运行 - 这使得很难通过结果对100次测试进行几次不同的运行。
代码段是:
for i in 0 .. @ar.length-1 do
puts'## Running : '+ @ar[i] + ' ##'
Dir.entries('./suite_dir').each do | file |
require './suite_dir/'+ file
end
end
答案 0 :(得分:1)
不要像这样使用require
,它不是可执行的......只能使用一次。
来自 http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-require
require(name)
→真或假加载给定名称,成功时返回true,如果成功则返回false 功能已加载。
答案 1 :(得分:0)
您可以使用类似的内容来运行目录中的所有文件:
Dir.foreach(path) do |file|
puts "Testing #{file}"
system(path+file)
end