2016-04-25 5 views
0

私は数時間、私のアプリケーションのデバッグに取り組んでいます。私はエラーを報告するにはrake testとタイプします。私には明白な理由もなく、突然のすべてrake testの出力がrakeテストを実行したときに最小のエラーが表示されない

Run options: --seed 33507 

# Running: 

........................EEEEEEE...........................E...........E.E.EF..EE...............................F.......F..EE....................FEEE.............................................. 

でわずか数分前にこのコマンドは私に、各テストの結果を示しました。私は間違って何をしていますか?

+1

これは完全な出力ですか?テストでこのテストシーケンスで無限ループが検出されましたか?または、テストが終了しましたか? – knut

+0

はいこれは完全な出力です。新しいコマンドプロンプトが表示されたことに基づいてテストが完了しました。 – stoebelj

+1

さて、この特定のテストシーケンスを使用した無限ループのアイデアだけでした。しかし、テストが終わったらもう一つの理由があるはずです。 – knut

答えて

1

問題はexitです。 exitは、テスト結果が書き込まれる前に実行を停止します。

最小限の例問題繰り返す:

Run options: --seed 21072 

# Running: 

F.. 

Finished in 0.001011s, 2967.6086 runs/s, 1978.4057 assertions/s. 

    1) Failure: 
MyTest#test_false [test.rb:13]: 
Failed assertion, no message given. 

3 runs, 2 assertions, 1 failures, 0 errors, 0 skips 

それとも別の結果:

Run options: --seed 10907 

# Running: 

F. 

背景:あなたは異なる結果を得る

class MyTest < MiniTest::Test 
    @@x = 0 
    def test_true 
    @@x += 1 
    assert true 
    end 
    def test_exit 
    exit 0 if @@x > 0 
    end 
    def test_false 
    assert false 
    end 
end 

シーケンス順序に応じてMinitestランダムな順序でテストを実行します。シードを使用すると、同じ順序でテストを繰り返すことができます。

私の例では、--seed 10907は最初にtest_trueを実行し、次にtest_exitを実行してexit-文を実行し、出力が失われます。

--seed 21072の場合、test_trueの前にtest_exitが実行され、exitが実行されません。あなたは結果を得る。

関連する問題