能否以固定的执行顺序在其他一些测试之间执行多个嵌套测试?
例如
@TestInstance(Lifecycle.PER_CLASS)
@TestMethodOrder(OrderAnnotation.class)
class MyTest {
private State state = State.ZERO;
@Test
@Order(1)
public void step1() throws IOException {
state = State.ONE;
}
@Order(2) // sth like this, however this annotation isn't allowed here
@Nested
class WhileInStateOne {
@Test
public void step2a {
Assumptions.assumeTrue(state == State.ONE);
// test something
}
@Test
public void step2b {
Assumptions.assumeTrue(state == State.ONE);
// test something else
}
}
@Test
@Order(3)
public void step3() throws IOException {
state = State.THREE;
}
}
我知道,单元测试通常应该是无状态的,但是在这种情况下,如果可以按固定顺序重用状态,则可以节省很多执行时间。
答案 0 :(得分:2)
不。嵌套类中的测试会在封闭类中的测试之后始终执行。那不能改变。
测试方法的排序仅适用于单个测试类中的方法。