2012-02-08 13 views
0

ci_reporterで生成されたXMLを使って、Test :: Unit :: TestCaseを使って単体テストを作成しました。しかし、私がコントロールできない状況のために、時には変動し、ランダムに失敗することがあります。私はテストが失敗したときにそれを検出し、それを再実行しようとします。ルビで失敗した単体テストを再実行する

私は、このテストを「譲歩しましたか?」を確認するための「teardown」という猿のパッチで行い、失敗のテストを再実行しました。ただし、XML出力には最初の失敗のケースが表示され、2番目の(今はパスしている)実行は表示されません。独自のファイルでテストケースをコピーします。

+0

も参照してくださいhttp://stackoverflow.com/questions/7435584/multiple-tests-with-minitest/7436257#7436257 – knut

+0

応答@knutのおかげで、この悲しいかな、私のコントロールを超えた何か、そして未います嘲笑する。ランダムな要素があります。私はそれと一緒に生活しなければならず、それを回避する方法を見つけなければなりません。 –

+0

私は答えにリンクしました。私は質問にリンクしたいと思った。http://stackoverflow.com/questions/7435584/multiple-tests-with-minitest/ - 私は答えを出すだろう。 – knut

答えて

0

これはMultiple tests with minitest

の反対のようなビットは、おそらくこれは、可能性がある聞こえます。例として、次のテストを試してください:

#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 < 2, "Value is #{num}") 
    end 
end 

その後rakeタスクにテストコールを定義します。

require 'rake' 

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

    if stdout =~ /Failure/ 
     puts "Failure occured - redo the test" 
    else 
     puts 'Tests ok' 
     success = true 
     exit 
    end 
    } 

    puts "Stopped after #{TEST_REPETION} tries" unless success 
end 

は今、テストが成功するまでテストは、呼び出されたかTEST_REPETIONが行われます。

備考:

  • レーキが必要とされていない、あなたは熊手なしで通話を行うことができます(My templateはrakeタスクだった)
  • 各実行のためのあなたのxmlが変更された場合、これはのみ動作し、それでなければなりません(テストの前に再生されます。
  • ファイルにテスト結果(stdout)を格納し、後で分析に使用することができます。どのテストが失敗し、再テストを試みますか。
関連する問題