2011-09-15 27 views
1

私はminitestに書かれた仕様のアプリを持っています。いつものように、私はrakeを使って始めます。minitestを使った複数のテスト

ランダムな結果が出ることがありますので、スペックは1回だけ通過し、それ以外の時間は失敗します。

この場合、修正後にシーケンス番号を保存して後で再生することができます。 私はこの種のテストを(ランダムな結果で)持っているので、私は通常、アプリケーションが大丈夫であることを確かめるために、rakeを何度も実行します。

rake複数のテスト(100回など)を実行し、エラーが発生した場合やエラーが発生した場合は停止するのが良い方法があるかどうかを知りたいですか?

+0

それほどうれしくないバージョン:バッククイックでrakeを呼び出して出力を分析する新しいタスクを作成します。 – knut

答えて

0

私はあなたの状況をシミュレートするために、ランダムな結果とダミーのテストを作成しました:

#store it as file 'testcase.rb' 
gem 'test-unit' 
require 'test/unit' 

class X < Test::Unit::TestCase 
    def test_1 
    num = rand(10) 
    assert_true(num < 5, "Value is #{num}") 
    end 
end 

次のタスクは、テスト10回を呼び出して、最初の失敗の後に停止します。

TEST_REPETION = 10 
task :test do 
    TEST_REPETION.times{ 
    stdout = `ruby testcase.rb` 

    if stdout =~ /\d+\) Failure/ 
     puts "Failure occured" 
     puts stdout 
     exit 
    else 
     puts 'Tests ok' 
    end 
    } 
end 

本当の使い方についてI

  • 代わりにputs 'Tests ok'にテストを実行する頻度を表示するsuccussfullでした
  • 代わりにputs stdoutあなたは結果ファイルに結果を保存することができますか?
5

私は、テストコールについてではなく、テストについて再度考えるべきだと思います。ランダムな結果のテストは私にとって間違っています。

テストでのランダムな要素は何ですか?ランダム要素のモック要素を記述し、モック要素の異なる値でテストを繰り返すことができますか?だから、あなたは "完全な"テストを受ける。

+0

私は同意します。しかし今は 'rake'コマンドを何度か実行したいだけです。そして、将来、私はこのsh ***をすべて書き直します。 :) –

関連する問題