0

我有一个脚本来运行目录中的所有测试,使用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

IE。测试仅针对最后一个选项运行 (d)

如果我使用“系统”,每个文件都单独运行 - 这使得很难通过几次不同运行的 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
4

2 回答 2

1

不要使用require,它不是可执行的......它只能工作一次。

来自http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-require

require(name)→ 真或假

加载给定的名称,如果成功则返回 true,如果已加载功能则返回 false。

于 2012-12-11T00:13:30.850 回答
0

您可以使用这样的东西来运行目录中的所有文件:

Dir.foreach(path) do |file|
  puts "Testing #{file}"
  system(path+file)
end
于 2012-12-11T07:19:17.133 回答