Проверяет комплексный подход к юнит- и интеграционному тестированию в Java-приложениях.
Юнит-тесты покрывают логику бизнес-сервисов с помощью моков (Mockito) репозиториев и HTTP-клиентов. Интеграционные тесты (@SpringBootTest) поднимают контекст приложения и используют Testcontainers для реальной БД, а для эмуляции внешних сервисов — WireMock или StubServer. Параллельно проверяют жизненные сценарии через WebTestClient или RestAssured.
Юнит-тестирование сервисного слоя:
Мокируйте @Repository и HTTP-клиенты (WebClient, RestTemplate) через Mockito.
Используйте @ExtendWith(MockitoExtension.class) или @WebMvcTest для контроллеров.
Проверяйте только бизнес-логику, без поднятия Spring Context.
Интеграционные тесты:
@SpringBootTest(webEnvironment = RANDOM_PORT) для старта всего приложения.
Testcontainers: поднимает PostgreSQL/MySQL контейнер, автоматически подключается через application-test.properties.
WireMock: эмулирует внешние REST API, настраивается в @BeforeAll.
Database Assertions: проверяйте данные через JdbcTemplate или @DataJpaTest.
API-тестирование:
RestAssured или WebTestClient: отправка HTTP-запросов к запущенному приложению, проверка статусов и тел ответов.
Cleanup и изоляция:
Используйте @DirtiesContext или транзакционные тесты (@Transactional) для возврата БД в исходное состояние.
CI/CD:
Интегрируйте тесты в конвейер (GitLab CI, Jenkins) с параллельным запуском контейнеров.