2012-12-11 34 views
0

我有一個腳本來運行require;我做的:在循環中調用`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

你能澄清你的程序在做什麼?也許寫一個具有相同(不希望的)行爲的簡短示例? – Zach

回答

0

您可以使用像這樣從目錄中運行的所有文件:

Dir.foreach(path) do |file| 
    puts "Testing #{file}" 
    system(path+file) 
end 
+0

感謝您的回覆!如果我使用'系統',每個單獨的文件都會單獨運行 - 這使得難以通過100次測試的結果來進行幾次不同的運行。 – mts