2010-11-26 7 views
4

私はEclipseを使用して実行する44個のJUnitテストのセットを持っています(私は他の誰かからそれらのテストを受けました - 私はJUnitテストが初めてです)。私がそれらを一緒に走らせると、そのうち24人は失敗する。しかし、私が失敗したものを個別に実行すると、それらのうちのいくつかは結局通り過ぎます。テストには少し時間がかかります。たとえば、失敗したテストの1つが完了するまでに1〜2分かかりますが、すべてのテストがほんの数秒で完了します。一緒に実行するとEclipseのJUnitテストが失敗する

私は複数のテストを開始していますが、その中にあるフォルダを右クリックし、 "Run As - > JUnit Test"を選択します。私はJUnit 3を使用しています。私はそれらを起動する際に何か間違っていますか?私は行方不明のオプションがありますか?

答えて

9

テストを見ることなく確実に言うのは難しいですが、次のテストで正しくリセットされていない状態やリソースを共有しているように聞こえます。

+0

私の場合、それは変更されていたプライベート静的変数でした。私はすべてのテストの後に変数をリセットしなければならなかった。 @Afterアノテーションを使用してクリーンアップメソッドにタグを付けました。 – ZakiMak

3

ゲーリーフの回答は1つ可能です。もう1つは、テストに競合条件があることです。テストが成功するかどうかは、何が起こるか(O/Sのバラつきによって異なる可能性がある)によって決まります。失敗したテストを別々に実行すると、は常にになりますか、失敗することがあります。彼らが時々失敗すれば、あなたは競争条件を持つ可能性が高いです。

+0

コードは稼働しているので今はチェックできませんが、私が試した4〜5回はいつも成功しています。また、JUniteコードには、時間条件があることを私に示唆するものはありませんでした。 – pyvi

+0

@pyviそして、GaryFのシナリオは証拠と一貫しています。 –

5

Garyの答えを拡張するには、右クリックしてRun As - > JUnitを実行すると、テストの実行順序が保証されず、共有リソースが破損する可能性があります。

まず、setup()メソッドとteardown()メソッドを見て、共有リソースが正しくリセットされていることを確認します。また、これらのテストを継承したので、いずれかのテストが互いに依存しているかどうかを調べることができます。これは悪い習慣であり、変更する必要がありますが、テストスイートを作成して(少なくともテストを再因子分割して切り離すまで)実行順序を確認することができます。

+0

私の場合、それはehcacheの誤設定でした。あまりにもローカライズされているので、 "ベストフィット"の答えをコメントしてください。 http://stackoverflow.com/a/21458679/837154を参照してください。 – orique

関連する問題