JUnit 5 - 如何使测试执行依赖于另一个测试传递?

时间:2017-10-31 17:03:25

标签: junit junit5

这里的学生。在JUnit 5中,根据另一个测试是成功还是失败来实现条件测试执行的最佳方法是什么?我认为它会涉及ExecutionCondition,但我不确定如何继续。有没有办法在不必将自己的状态添加到测试类的情况下执行此操作?

要注意,我知道dependent assertions,但我有多个nested tests代表不同的子状态,所以我想在测试级别本身做一个方法。

示例:

@Test
void testFooBarPrecondition() { ... }

// only execute if testFooBarPrecondition succeeds
@Nested
class FooCase { ... }

// only execute if testFooBarPrecondition succeeds    
@Nested
class BarCase { ... }

1 个答案:

答案 0 :(得分:0)

您可以通过在@ BeforeEach / @ BeforeAll设置方法中提取公共前提条件逻辑来解决问题,然后使用assumptions,这是为了条件测试执行的目的而开发的。一些示例代码:

class SomeTest {

@Nested
class NestedOne {
    @BeforeEach
    void setUp() {
        boolean preconditionsMet = false;
        //precondition code goes here

        assumeTrue(preconditionsMet);
    }

    @Test // not executed when precodition is not met
    void aTestMethod() {}
}

@Nested
class NestedTwo {
    @Test // executed
    void anotherTestMethod() { }
}

}