Unit-тесты проверяют одну функцию/метод изолированно, зависимости мокаются. Быстрые, стабильные, ловят баги в логике.
Интеграционные — проверяют взаимодействие компонентов: сервис + БД, сервис + внешний API. Медленнее, могут быть flaky, но ловят баги на стыках.
В Go unit-тесты — _test.go файлы, go test ./.... Интеграционные обычно отделяют build-тегом //go:build integration или проверкой env-переменной. Используй testcontainers для поднятия БД в Docker. Пирамида: много unit, меньше integration, мало e2e.