Короче… Я же знал, что они существуют. Видел где-то в статьях, слышал на конференциях, даже пару раз пролистывал доку. И каждый раз думал: «Ну да, прикольно, может потом».
И вот этот «потом» наконец случился.
Сейчас я как раз собираю для коллег гошный шаблон микросервиса — чтобы любой мог стартануть без боли, сразу писать бизнес-логику, а не копаться в инфраструктурной рутине. Ну и логично было заодно нормально пройтись по инструментам, которые давно висели в списке «надо потом попробовать».
И тут я такой: ладно, давай посмотрим на эти ваши testcontainers…
Блин. Кайф.
Типа прям честный кайф.
Ты просто из кода поднимаешь Kafka, Postgres, MinIO — что угодно — и тестируешь как человек. Быстрая проверка CRUD? Пара секунд. Проверка продюсера/консьюмера — ещё пару секунд. И всё. Никакого «а давайте поднимем докер-композ», никакого «подождите, сейчас локально настрою». Стартуют почти как юниты с моками, только результат реальный, живой, как в проде.
И вот это чувство… когда тесты, которые должны страдать минуту, вдруг проходят за 3 секунды — я такой:
где вы были всю мою жизнь?
Теперь жалею, что не внедрил это раньше в команде. Но зато в новый шаблон — войдут по-любому.
Если кто-то до сих пор сомневается: не сомневайтесь. Это как впервые попробовать нормальный автотестовый фреймворк после ручных проверок в Postman — назад уже не хочется.
P.S. Вот так например выглядет поднятие постгри:
pgContainer, err := postgresContainer.Run(ctx,
"postgres:18",
postgresContainer.WithDatabase("testdb"),
postgresContainer.WithUsername("testuser"),
postgresContainer.WithPassword("testpass"),
testcontainers.WithWaitStrategy(
wait.ForLog("database system is ready to accept connections").
WithOccurrence(2).
WithStartupTimeout(30*time.Second),
),
)
#golang #testcontainers #микросервисы #testing #qa #backend #go