在JUnit 5中中止/忽略参数化测试

克里斯蒂安·鲍曼

我有一些参数化测试

@ParameterizedTest
@CsvFileSource(resources = "testData.csv", numLinesToSkip = 1)
public void testExample(String parameter, String anotherParameter) {

    // testing here
}

万一执行失败,我想忽略所有后续执行。

Beatngu13

AFAIK没有内置的机制可以执行此操作。下面的方法确实有效,但是有点黑:

@TestInstance(Lifecycle.PER_CLASS)
class Test {

    boolean skipRemaining = false;
    
    @ParameterizedTest
    @CsvFileSource(resources = "testData.csv", numLinesToSkip = 1)
    void test(String parameter, String anotherParameter) {
        Assumptions.assumeFalse(skipRemaining);
        try {
            // testing here
        } catch (AssertionError e) {
            skipRemaining = true;
            throw e;
        }
    }

}

与失败的断言(将测试标记为失败)相反,假设会导致测试中止。此外,生命周期从每个方法切换到每个类:

使用此模式时,每个测试类将创建一个新的测试实例。因此,如果测试方法依赖于实例变量中存储的状态,则可能需要在@BeforeEach@AfterEach方法中重置该状态

根据您需要该功能的频率,我宁愿使用自定义扩展程序

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章