Java 1.6 以前を使って JUnit テストを実行すると、ソース ファイルで宣言された順番で実行されます。
注: しかし、Java 1.7 以降では、JUnit テストを実行する順番を指定することはできません。これは、テスト実行における JUnit の制約です。
JUnit テストの実行順序は JUnit のバージョンによって異なります。JUnit 4.11 より前のバージョンを使用すると、テストは特定の順番は無く、実行されます。テスト実行のたびに異なることもあります。JUnit 4.11 以降では、各テスト実行で同じ順番でテストが実行されますが、順番は予測できません。
テスト環境によっては、この制約を回避できる場合があります。
回避策の例
テスト セットにモジュールやスイートが含まれない場合、ソース ファイルの最初に次の行を追加します。
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.JVM)
FixMethodOrder には、3 種類の値を指定できます。
- MethodSorters.JVM
- JVM によって返されるメソッドの順番。テストの実行ごとに変化する可能性があります。テスト セットが正しく実行されない場合があります。
- MethodSorters.DEFAULT
- メソッド名の hashCode に基づいた一意に決定される順序。適切な hashCode になるようにメソッド名を定義しなければならないため、順番を変更することは困難です。
- MethodSorters.NAME_ASCENDING
- テストの名前の辞書式順序に基づいた順序。テスト名のアルファベット順がテストを実行する順番と一致するように、テストの名前を変更する必要があります。
1.7 より前のバージョンの Java を使用することもできます。