Ответ
Аннотация @ExtendWith в JUnit 5 регистрирует расширения (Extensions), которые добавляют дополнительное поведение к тестовому классу или методу.
Что указывают: Классы, реализующие интерфейс Extension. Например:
@ExtendWith(MockitoExtension.class) // Подключает поддержку Mockito
class UserServiceTest {
@Mock
private UserRepository repository;
// ... тесты с моками
}
Распространённые расширения:
MockitoExtension.class— для интеграции Mockito (автоматическое создание моков через@Mock).SpringExtension.class— для загрузки SpringApplicationContextв тестах (заменяет@RunWith(SpringRunner.class)из JUnit 4).TempDirectory.class— предоставляет временную директорию для тестовых файлов.
Можно указать несколько расширений:
@ExtendWith({MockitoExtension.class, LoggingExtension.class})
Почему это важно: Расширения позволяют отделить вспомогательную логику (настройка моков, контекста Spring) от самого теста, делая код чище и переиспользуемым.