Юнит-тесты проверяют отдельные, изолированные модули кода (функции, методы, пакеты) без внешних зависимостей. Интеграционные тесты проверяют взаимодействие между несколькими модулями или подсистемами, включая зависимости (базы данных, внешние сервисы). Главное отличие — область покрытия и изоляция. Юнит-тесты изолированы, быстрые и помогают выявить ошибки в конкретном элементе. Интеграционные затрагивают взаимодействие, медленнее, но выявляют проблемы интеграции.
| Признак | Юнит-тесты | Интеграционные тесты |
|---|---|---|
| Область проверки | Отдельный модуль (функция, метод) | Взаимодействие модулей/подсистем |
| Изоляция | Высокая (моки, стабы) | Низкая (включает зависимости) |
| Скорость | Быстрые | Медленные |
| Цель | Проверка логики модуля | Проверка взаимодействия и интеграции |
| Количество | Большое | Меньшее |
| Сложность | Низкая | Выше |
Пример юнит-теста в Go:
go
Пример интеграционного теста (проверяет взаимодействие с базой данных):
go