SuperAPI AI 工具集

testcontainers-go

通用与其它

查看项目

更新于 10-16 02:28

技能介绍

用途:为 Go 项目编写可靠的集成测试,使用 Testcontainers for Go 在 Docker 容器中启动真实服务(数据库、消息队列、浏览器等),避免对外部依赖的 mock。

主要能力:提供 62+ 预配置模块,涵盖数据库(postgres、mysql、mongodb、redis 等)、消息队列(kafka、rabbitmq、nats 等)、搜索与向量数据库、云与基础设施、服务与工具、开发工具;支持通用容器以应对无模块的服务;支持网络、卷、环境变量配置;提供 ConnectionString()、Endpoint()、Brokers() 等连接辅助方法;支持快照与恢复、生命周期钩子、等待策略等;可分离集成测试与单元测试(构建标签),并适用于 CI/CD(GitHub Actions、GitLab CI 等)。

使用方式:先安装依赖,如 go get github.com/testcontainers/testcontainers-go;模块示例:go get github.com/testcontainers/testcontainers-go/modules/postgres。测试中先注册清理再检查错误:ctr, err := testcontainers.Run(...); testcontainers.CleanupContainer(t, ctr); require.NoError(t, err)。暴露端口时必须使用等待策略(如 wait.ForListeningPort),禁止用 time.Sleep 同步。优先使用预配置模块而非通用容器;多容器通信可创建自定义网络。

适用场景:需要真实服务依赖的集成测试、多版本或配置的兼容性测试、可复现测试环境、临时测试基础设施、容器设置跨包共享(TestMain)。

限制与前提:需安装并运行 Docker 或 Podman;Go 1.24+(以 go.mod 为准);Docker socket 需可访问(macOS/Windows 为 Docker Desktop,Linux 为 /var/run/docker.sock)。资料未提供其他平台支持、收费或价格信息。