Sobes.tech
Senior
22

Что такое Test Containers?

Companies where asked
Гос крипта

Answer from AI

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)

    // Здесь можно получить адрес и порт контейнера и подключиться к БД для тестов
}

Такой подход повышает надежность тестов и упрощает настройку окружения.