junit 5の3つの異なる指定例のテスト順序
1616 ワード
JUNIT 5では、試験用例の順序を指定する3つの方法があります:1)@order注記を使用する
2)アルファベット順の使用
3)ランダムな順序を使う:
デフォルトはSystemです.nanoTime()ナノ秒の場合は、junit-platformでプロファイルを変更することもできます.propertiesでの変更:
例えば、上記のように、方法の長さに応じて順番比較を行い、使用方法:
@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=
42
4)
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() {}
}