Ответ вслух Middle Тестирование в Spring спрашивают часто обновлено

Стратегия тестирования Spring-сервиса

Вопрос

Как вы организуете тесты Spring Boot сервиса: что и какими средствами тестируете?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Основу составляют юнит-тесты бизнес-логики без Spring: сервис создаю через конструктор с моками, они идут миллисекунды. Контроллеры проверяю @WebMvcTest и MockMvc: маршруты, валидацию, коды ошибок, JSON и права доступа, сервисы замоканы.

Что должно прозвучать в ответе

  • Бизнес-логика: юнит-тесты без Spring с Mockito

  • Контроллеры: @WebMvcTest и MockMvc, валидация и ошибки

  • Репозитории: @DataJpaTest с Testcontainers

  • Несколько сквозных @SpringBootTest

  • Внешние HTTP: WireMock, Kafka: Testcontainers, асинхронщина через Awaitility

  • Скорость: кеш контекста, общий контейнер

Что могут спросить следом

  • Сколько интеграционных тестов достаточно?
  • Как тестировать миграции базы?

Разбор

Основу составляют юнит-тесты бизнес-логики без Spring: сервис создаю через конструктор с моками, они идут миллисекунды. Контроллеры проверяю @WebMvcTest и MockMvc: маршруты, валидацию, коды ошибок, JSON и права доступа, сервисы замоканы. Репозитории и нетривиальные запросы проверяю @DataJpaTest на настоящем PostgreSQL в Testcontainers, там же прогоняются миграции Flyway или Liquibase. Сверху несколько сквозных @SpringBootTest на ключевые сценарии, внешние HTTP-сервисы через WireMock, брокер через Testcontainers, асинхронные результаты жду Awaitility. Слежу за скоростью: один набор моков в базовом классе, чтобы контекст кешировался, и один контейнер базы на весь прогон.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.