JUnit5のテストは、テストコードの上から順番に実行されません!
例えば、次のようなコードの場合は、どのメソッドから実行されるでしょうか?
class JUnitTest {
@Test
void Orderを使うと() {
System.out.println("Orderを使うと");
}
@Test
void テストの順番を() {
System.out.println("テストの順番を");
}
@Test
void 指定することが() {
System.out.println("指定することが");
}
@Test
void できます() {
System.out.println("できます");
}
}
コードの上から順番に実行されるのではなく、実際の実行順はバラバラになってしまいます。
指定することが
テストの順番を
できます
Orderを使うと
単体テストの場合、テストの実行順序に依存しないことが良いとされているため、実行順序がバラバラになるようになっているとか….
では、JUnit5でテストを任意の順番で実行させる方法を紹介します!
JUnit5でテスト順序を指定する方法
@Orderアノテーションを使用することで、テストを任意の順で実行させることができます。
@TestMethodOrder(OrderAnnotation.class)
class JUnitTest {
@Test
@Order(1)
void Orderを使うと() {
System.out.println("Orderを使うと");
}
@Test
@Order(2)
void テストの順番を() {
System.out.println("テストの順番を");
}
@Test
@Order(3)
void 指定することが() {
System.out.println("指定することが");
}
@Test
@Order(4)
void できます() {
System.out.println("できます");
}
}
こちらを実行すると、意図した順番でテストが実行されます。
Orderを使うと
テストの順番を
指定することが
できます
必要な手順は以下の2つです。
- テストクラスに@TestMethodOrderアノテーションを追加
- テストメソッドに@Orderアノテーションで実行順を指定
テストは@Order(1)、@Order(2)、@Order(3)のように指定した数字の昇順で実行されます。
JUnit5のテスト実行順を指定したい場合は、@Orderを使ってみましょう!
コメント