Как вы писали модульные и интеграционные тесты
Что проверяют
Различаете ли вы уровни на практике и понимаете ли, что каким проверяется. Заодно смотрят, тестируете ли вы поведение или реализацию.
Как отвечать
Разложите по уровням с конкретикой.
> «Модульные на JUnit 5 плюс AssertJ и Mockito: чистая логика без базы и сети, расчёты и правила валидации. Держу их быстрыми, весь набор проходит за секунды и гоняется на каждое изменение. > > Интеграционные через @SpringBootTest с Testcontainers: поднимаю настоящий PostgreSQL и Kafka в контейнерах, потому что заглушка репозитория не ловит ошибки в запросах и в схеме. Веб-слой отдельно через @WebMvcTest с MockMvc: контроллер, сериализация, валидация, коды ответов. > > Из последнего: после перехода на новый маппинг тест на число запросов поймал возврат N+1, которого не было видно ни в логах, ни глазами».
Что стоит проговорить как принципы: проверяем поведение, а не приватные детали; данные строим фабриками, а не копипастой; моки только на внешних границах; обязательно негативные сценарии и права доступа; тесты идут в CI, иначе устаревают.
Где спотыкаются
Называют модульными тесты, поднимающие весь контекст Spring.
Мокают собственные сервисы и проверяют, что моки вызвались.
Используют базу в памяти вместо настоящей и пропускают ошибки, специфичные для СУБД.
Гонятся за покрытием вместо проверки важных путей.