Выбор ответа Junior Тестирование: JUnit 5 и Mockito обновлено

Параметризованный тест

Вопрос

Как в JUnit 5 прогнать один тест на наборе входов и ожидаемых значений?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: @ParameterizedTest с @CsvSource. @ParameterizedTest запускает тест на каждый набор аргументов и показывает каждый как отдельный результат, @CsvSource удобно задаёт пары вход-ожидание.

Варианты ответа

  1. Цикл for по входам внутри @Test
  2. @RepeatedTest(5) с разными входами
  3. @ParameterizedTest с @CsvSourceправильный ответ
  4. @TestFactory с @ValueSource

Разбор

@ParameterizedTest запускает тест на каждый набор аргументов и показывает каждый как отдельный результат, @CsvSource удобно задаёт пары вход-ожидание. Цикл внутри одного теста остановится на первом провале и не покажет, какие ещё случаи падают. @RepeatedTest повторяет без разных данных. @TestFactory для динамических тестов, @ValueSource с ним не используется.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме