Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: unit test, integration test, testcontainers, wiremock, restassured

Как протестировать сервис, который обращается к базе и внешним системам?

Проверяет комплексный подход к юнит- и интеграционному тестированию в 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) с параллельным запуском контейнеров.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#unit test

#integration test

#testcontainers

#wiremock

#restassured

Подпишись на Java Developer в телеграм