Вопрос с собеседования · 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?
Разбор темы
- Тестирование, логирование и базовые паттерны
Unit/integration тесты, уровни логирования, MDC и Singleton без ловушек.
Связанные вопросы
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.