JUnit5でテストの順番を指定したい!実行順序は@Orderで制御できます

Java
スポンサーリンク

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つです。

  1. テストクラスに@TestMethodOrderアノテーションを追加
  2. テストメソッドに@Orderアノテーションで実行順を指定

テストは@Order(1)、@Order(2)、@Order(3)のように指定した数字の昇順で実行されます。

JUnit5のテスト実行順を指定したい場合は、@Orderを使ってみましょう!

コメント

タイトルとURLをコピーしました