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を使ってみましょう!
 
  
  
  
  

コメント