Стратегия тестирования Spring-сервиса
Вопрос
Как вы организуете тесты Spring Boot сервиса: что и какими средствами тестируете?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Бизнес-логика: юнит-тесты без 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 ошибок.