junior
Какие новые аннотации появились в JUnit 5?
JUnit 5 вводит ряд новых аннотаций, расширяющих возможности написания тестов:
@DisplayName— задаёт человекочитаемое имя теста, которое отображается в отчётах.@Nested— позволяет создавать вложенные тестовые классы для логической группировки.@ParameterizedTest— параметризованный тест с различными источниками данных.@RepeatedTest— повторяет тест указанное число раз.@Tag— помечает тесты тегами для фильтрации при запуске.@Disabled— отключает тест или тестовый класс.@Timeout— задаёт максимальное время выполнения теста.@ExtendWith— регистрирует расширения (замена@RunWithи@Rule).@TempDir— инъекция временной директории для файловых тестов.
Пример кода
import org.junit.jupiter.api.*;
@DisplayName("Тесты калькулятора")
class CalculatorTest {
@Test
@DisplayName("Сложение двух положительных чисел")
void shouldAddTwoPositiveNumbers() {
assertEquals(5, calculator.add(2, 3));
}
@Test
@Disabled("Деление ещё не реализовано")
void shouldDivide() {
// ...
}
@RepeatedTest(5)
@DisplayName("Повторяющийся тест генерации случайных чисел")
void randomTest(RepetitionInfo info) {
System.out.println("Повторение: " + info.getCurrentRepetition());
}
@Test
@Tag("slow")
@Timeout(value = 5, unit = TimeUnit.SECONDS)
void longRunningTest() {
// долгий тест
}
}
На собеседовании: достаточно перечислить 5-6 ключевых аннотаций и описать их назначение. Частая ошибка — путать
@RepeatedTestи@ParameterizedTest: первый повторяет один и тот же тест, второй запускает тест с разными данными.