Вопрос с собеседования · Java

Чем unit-тест отличается от integration-теста?

JuniorТестирование и логирование
Коротко

Unit-тест проверяет единицу логики изолированно: быстро, без БД и сети, зависимости заменены моками. Интеграционный проверяет связку компонентов с реальной инфраструктурой: БД, брокер, HTTP. Медленнее, но ловит ошибки стыков.

  • Пирамида: много unit, меньше интеграционных, мало end-to-end
  • Интеграционные нужны для репозиториев, миграций, сериализации, брокеров
  • Testcontainers — настоящая БД в Docker для тестов

А ещё Моки всего подряд дают тесты, проверяющие моки, а не код

Подробно

Unit-тесты быстрые и их много. Интеграционные тесты дороже, но нужны для репозиториев, миграций, HTTP-контрактов, сериализации и брокеров.

Что хотят услышать

  • Различие по изоляции и скорости.
  • Где нужен каждый вид.

Частые ошибки

  • Мокать всё подряд и не проверить реальный контракт.
  • Поднимать весь Spring context для каждого простого unit-теста.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Unit — изолированная единица кода с моками; integration — работа с реальными зависимостями
  • ✗Unit-тесты медленнее integration-тестов
  • ✗Integration-тесты проверяют один класс, а unit — всю систему с реальной БД и сетью
  • ✗Это одно и то же

Что спросят дальше

  • Что такое test pyramid?
  • Когда использовать Testcontainers?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования