Прервать / игнорировать параметризованный тест в JUnit 5 - PullRequest
1 голос
/ 09 апреля 2020

У меня есть несколько параметризованных тестов

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

    // testing here
}

В случае сбоя одного выполнения я хочу игнорировать все последующие выполнения.

1 Ответ

1 голос
/ 12 апреля 2020

AFAIK нет встроенного механизма для этого. Следующее сработало бы, но это довольно хаки sh:

@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 методах.

В зависимости от того, как часто вам нужна эта функция, я скорее go с пользовательским расширением .

...