2011-09-01 30 views
30

このpostでは、私は大きな問題の一部として小さな質問をしました。私はまだ回答を得ていないので、私はここに質問を入れました:JUnitはテストケースを順番に実行しますか?

JUnitはテストケースを順番に実行すると仮定するのが妥当です。テストケースが終了したら、テストケースが終了します。 JUnitバージョン間で違いがありますか(私の優先順位はJUnit4です)? JUnitにテストを順番に実行させる簡単な方法はありますか?

はい、デフォルトでは、私はそれが順次テストを実行信じるあなた

+0

あり、ここでのJUnit 4.7を使用して並列にテストを実行に関するいくつかの詳細は、次のとおりです。http:// stackoverflowの。com/questions/423627/running-junit-tests-in-parallel – mort

+0

MavenビルドでJUnitを使用し、ビルドが-Tパラメータ(-T 4Cなど)を使用してマルチスレッドに設定されている場合、テストは可能な限り並行して実行されます –

答えて

23

ありがとうございます。

JUnit 4.6では、テストを並行して実行するために実験を導入しました。現在の状況はわかりません。私は、並列処理がデフォルトでは「オプトイン」機能のままであることを期待しています。

+0

@FDinoff:はい、4.6のリリースノートは今見つけるのが難しいようです。私はリンクを削除しました。 –

+0

一般的に、テストを順次ではなく並列で実行する方が良いですか?テストを並行して実行するためには、どのようなハードウェアが必要ですか? – testerjoe2

+0

これは、デバッグ以外のシーケンスを確認するのに妥当な方法ですか? 10のテストメソッドでテストクラスを作成します。テストクラスに整数のリストを作成します。各テストメソッドはクラス内の位置をリストに入力します。すべてのテストを10回実行します。毎回、整数は常に正しい順序でなければなりません。 – testerjoe2

4

確かに、JUnitはデフォルトではシングルスレッドです。他の回答で判断すると、これはここに残っているように見えますが、やや異なった形になります。

そうでなければ、コードが壊れているか、いくつかのテストが並行して実行された場合に並行性の問題が原因で失敗したため、テストが失敗したかどうかはわかりません。

+0

各テストで独自のテストデータを使用する場合(必ずしも可能ではない)、テストを並行して実行する方が良いでしょうか? – testerjoe2

15

JUnit 4.7以降、テストの並列実行がサポートされています。しかし、私が知る限り、自動的に行われることはありません。具体的には設定する必要があります。ここのように:http://java.dzone.com/articles/running-junit-tests-parallel

しかし、それを忘れないでください:

良い自動化されたテストは、それらを同時に実行されるための理想的な候補作り、独立した単離され、再現性でなければなりません。

質問する理由はわかりませんが、上記の基準が満たされていない場合は、テストデザインについて考えることができます。

+0

"優れた自動テストは独立した独立した再現可能なテストでなければなりません" - テストデータ作成プロセスが時間とリソースをあまり使わない限り、テストごとに別のテストデータを作成することでこれを達成できますか? – testerjoe2

3

はい、また

そして、あなたが実行するために、次のテストの状態を復元するコードを持っていることが@before@afterを考えます。

+0

もう少し説明していただけますか? – testerjoe2

1

はい。コメントのどこかで述べたように、テストケースのセットアップとティアダウンはもちろん、テストケースのセットアップとティアダウン(すべてのスーパークラスがそれらのアクションに影響を与えます)を慎重に計画する必要があります。

また、私が覚えている限り、JUnitはテストケースの実行順序を保証しません(つまり、スイートに入っていない限り)。これは重要であり、テスト間で非常に正確なクリーンアップとSUT状態の復元を実行し、他のテストケースの結果に依存するテストケースを避ける必要があります。これは反パターンの一種だと言うかもしれません:)。

-1

私の経験では、テストでメソッド名を命名することで、クラス内のテストをシリアル化できます。 例:

@Test 

public ..... firstTest() 
{ 

} 

@Test 

public .... thirdTest() 
{ 

} 

@Test 

public....secondTest() 
{ 

} 

順序はサイドノートとしてfirstTest、thirdTest、secondTest

関連する問題