Senior
21
Что такое Test Containers?
Компании, где спрашивали
Гос крипта
Ответ от нейросети
sobes.tech AI
Test Containers — это подход и набор инструментов для автоматического запуска изолированных контейнеров (например, Docker) с необходимыми сервисами (базы данных, брокеры сообщений и т.п.) во время выполнения тестов. Это позволяет создавать интеграционные тесты, которые работают с реальными зависимостями, но при этом легко настраиваются и изолированы.
В Go можно использовать библиотеки, которые оборачивают Docker API для управления контейнерами в тестах. Пример использования Test Containers для запуска PostgreSQL:
import (
"context"
"testing"
"github.com/testcontainers/testcontainers-go"
"github.com/testcontainers/testcontainers-go/wait"
)
func TestWithPostgres(t *testing.T) {
ctx := context.Background()
req := testcontainers.ContainerRequest{
Image: "postgres:13",
Env: map[string]string{"POSTGRES_PASSWORD": "secret"},
ExposedPorts: []string{"5432/tcp"},
WaitingFor: wait.ForListeningPort("5432/tcp"),
}
postgresC, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
ContainerRequest: req,
Started: true,
})
if err != nil {
t.Fatal(err)
}
defer postgresC.Terminate(ctx)
// Здесь можно получить адрес и порт контейнера и подключиться к БД для тестов
}
Такой подход повышает надежность тестов и упрощает настройку окружения.