用途:为 Gin 编写的 REST API 提供分层测试方案,帮助开发者按 Handler、Service、Repository、E2E 四层组织测试。
主要能力:Handler 层用 httptest 加 mock service 验证 HTTP 契约(状态码、JSON 结构);Service 层用 mock repository 验证业务逻辑与错误映射;Repository 层用 testcontainers 连接真实 PostgreSQL 验证 SQL 正确性;E2E 层用运行中的服务器加真实数据库验证关键用户流程。还包含表驱动测试(覆盖请求校验与错误路径)、JWT 认证中间件隔离测试、TestMain 共享测试基础设施,以及 internal/testutil/ 中的可复用辅助函数(如 NewTestRouter、PerformRequest、AssertJSON、BearerHeader)。
使用方式:在测试中通过 gin.SetMode(gin.TestMode) 抑制调试输出,用 httptest.NewRecorder 配合 router.ServeHTTP 发起请求。运行命令示例:go test -v -race -cover ./...;仅跑单元测试可用 go test -v -race -cover -tags='!integration' ./...;仅跑集成测试(需 Docker)可用 go test -v -race -tags=integration ./internal/repository/...;覆盖率报告用 go test -race -coverprofile=coverage.out ./... 与 go tool cover -html=coverage.out。
适用场景:为 Gin handler、service、repository 编写测试,验证 JWT 中间件,搭建集成测试数据库环境,以及为关键流程编写端到端测试。
限制:资料未提供具体版本要求、依赖安装步骤、收费信息或性能数据;集成测试依赖 Docker 与 testcontainers,E2E 测试需要可运行的服务器和真实数据库。原则是不要 mock 正在测试的对象,只 mock 其下一层。