Ответ
При запуске интеграционных тестов с аннотацией @SpringBootTest поднимается полный или частичный ApplicationContext Spring, аналогичный контексту работающего приложения.
Что это дает:
- Загружаются все конфигурации (
@Configurationклассы). - Сканируются и создаются бины (
@Component,@Service,@Repositoryи др.). - Настраиваются профили (
@ActiveProfiles) и свойства. - Внедряются зависимости в тестовый класс через
@Autowired.
Пример интеграционного теста:
@SpringBootTest // Запускает контейнер Spring для теста
class UserServiceIntegrationTest {
@Autowired
private UserService userService; // Бин из поднятого контекста
@Test
void testUserCreation() {
User user = userService.createUser("John Doe");
assertNotNull(user);
assertNotNull(user.getId());
}
}
Для модульных тестов (без поднятия всего контекста) используются:
@MockBean/@SpyBeanдля мокирования бинов в легковесном контексте.@WebMvcTestдля тестирования только слоя MVC.@DataJpaTestдля тестирования только JPA-компонентов.