0

を使用して、ディレクトリ内のすべてのテストを実行するスクリプトがありますrequire。そうです:

Dir.files.each
...

その後

require 'path'
...

別のループを使用して、さまざまな引数を渡してこれらのテストを数回実行しようとしています。配列に引数があり、配列を調べてから、上記と同じコードを実行して、ディレクトリ内のすべてのテストを実行します。このループでは、次の行を出力します。

puts executing tests for a[i]

次の行はrequire一連のテストを実行する行です。問題は、印刷がたとえば 10 回 (10 行がまとめて印刷される)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)

「システム」を使用すると、すべてのファイルが個別に実行されます。これにより、たとえば、いくつかの異なる実行に対して 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

0

次のようなものを使用して、ディレクトリからすべてのファイルを実行できます。

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