Вопрос проверяет понимание способов загрузки Spring-контекста и выбора подходящего уровня интеграционных тестов.
@SpringBootTest поднимает почти полный контекст Spring Boot приложения. @ContextConfiguration загружает только указанные конфигурации. Первый используется для полноценных интеграционных тестов, второй — для более изолированных проверок. @SpringBootTest тяжелее и медленнее. Выбор зависит от целей теста.
Обе аннотации поднимают Spring-контекст, но делают это по-разному.
@SpringBootTest — аннотация для загрузки полного контекста Spring Boot приложения.@ContextConfiguration — аннотация для загрузки явно заданных конфигураций.
@SpringBootTestИспользуется для end-to-end или интеграционных тестов.
Особенности:
Загружает ApplicationContext
Поднимает auto-configuration
Может стартовать web-сервер
Медленный, но максимально близок к продакшену
Пример:
@SpringBootTest
class ApplicationIT {
}
@ContextConfigurationИспользуется для изолированных тестов.
Особенности:
Загружает только указанные конфигурации
Нет auto-configuration
Быстрее
Больше контроля
Пример:
@ContextConfiguration(classes = TestConfig.class)
class ServiceTest {
}
Проверка всей системы → @SpringBootTest
Проверка конкретного слоя → @ContextConfiguration
Частые тесты → минимальный контекст
@SpringBootTest даёт реалистичность, @ContextConfiguration — скорость и контроль. Хорошая тестовая стратегия использует оба подхода.