junit 5の3つの異なる指定例のテスト順序

1616 ワード

JUNIT 5では、試験用例の順序を指定する3つの方法があります:1)@order注記を使用する
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class TestExecutionOrderWithOrderAnnotation {
 
    @Order(1)
    @Test
    void aTest() {}
 
    @Order(2)
    @Test
    void bTest() {}
 
    @Order(3)
    @Test
    void cTest() {}
 
}

2)アルファベット順の使用
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
class AlphanumericTestExecutionOrder {
 
    @Test
    void aTest() {}
 
    @Test
    void bTest() {}
 
    @Test
    void cTest() {}
 
}

3)ランダムな順序を使う:
@TestMethodOrder(MethodOrderer.Random.class)
class AlphanumericTestExecutionOrder {
 
    @Test
    void aTest() {}
 
    @Test
    void bTest() {}
 
    @Test
    void cTest() {}
 
}

デフォルトはSystemです.nanoTime()ナノ秒の場合は、junit-platformでプロファイルを変更することもできます.propertiesでの変更:junit.jupiter.execution.order.random.seed= 424)
   
class MethodLengthOrderer implements MethodOrderer {
 
    private Comparator comparator =
            Comparator.comparingInt(methodDescriptor -> methodDescriptor.getMethod().getName().length());
 
    @Override
    public void orderMethods(MethodOrdererContext context) {
        context.getMethodDescriptors().sort(comparator);
    }
}

例えば、上記のように、方法の長さに応じて順番比較を行い、使用方法:
@TestMethodOrder(MethodLengthOrderer.class)
class CustomTestExecutionOrder {
 
    @Test
    void aTest() {}
 
    @Test
    void abTest() {}
 
    @Test
    void abcTest() {}
 
}