В Go принято хранить тесты рядом с кодом, который они проверяют, с постфиксом _test.go. Такой подход обеспечивает локальную связность и позволяет легко находить, что и как тестируется. Тесты в том же пакете могут обращаться к неэкспортируемым функциям и переменным, что упрощает написание чистых юнит-тестов. Практически все open-source проекты Go используют этот подход.
Почему рядом с кодом (_test.go) — норм
Локальная связность
Тесты прямо рядом с кодом, который они проверяют → легко найти, понять, что и как тестируется.
Если видишь order_service.go, рядом лежит order_service_test.go → сразу понятно, где его юнит-тесты.
Тесты в том же пакете
Тесты могут обращаться к неэкспортируемым функциям и переменным пакета, что невозможно из другого пакета.
Позволяет писать чистые юнит-тесты без необходимости экспортировать внутренние функции специально для тестов.
Принято в Go-сообществе
Практически все официальные библиотеки и open-source проекты Go делают именно так.
Инструменты (go test ./...) сразу видят тесты и правильно их запускают.
Когда делают отдельную папку
Большие интеграционные / E2E тесты
Если тесты требуют поднятия Docker, Kafka, Postgres → создают папку test или integration для отделения от обычных юнит-тестов.
Это помогает разделить легкие быстрые тесты и тяжелые медленные тесты.
Изоляция от основного пакета
Иногда тесты должны использовать только публичный API, чтобы проверить внешний контракт → кладут в отдельный пакет, например package mypkg_test.
Однако для больших интеграционных или E2E тестов, которые требуют поднятия Docker, Kafka или Postgres, имеет смысл создавать отдельные папки /test или /integration, чтобы отделить легкие быстрые тесты от тяжелых медленных. Также иногда тесты помещают в отдельный пакет, чтобы проверять только публичный API.
Итог: юнит-тесты и легкие интеграционные тесты — рядом с кодом. Сложные интеграционные и E2E — в отдельной папке. В вашем проекте Kafka и Postgres integration можно делать через //go:build integration в тех же _test.go файлах, а E2E с Docker-compose вынести в отдельную папку для наглядности.
поделиться в:
2025-09-102025-09-10allaboutknit.ru Все обо всём - Сайт, который расширяет границыhttps://allaboutknit.ru/gde-hranity-testi-v-go
allaboutknit.ru Все обо всём - Сайт, который расширяет границыКраснадарallaboutknit@mail.ruhttps://allaboutknit.ru/images/dynamic/text/news/811/dbe369a7bc6b522f6b63a115d6de524e-thumb.pnghttps://allaboutknit.ru/images/dynamic/text/news/811/dbe369a7bc6b522f6b63a115d6de524e-thumb.pngallaboutknit.ru Все обо всём - Сайт, который расширяет границы