用途:为 Go 项目生成集成测试,针对真实数据库与基础设施依赖验证用例,覆盖正常路径、边界条件、错误情况以及数据库状态和副作用断言。
主要能力:使用 testify 的 suite.Suite 组织测试套件,配合 itestkit 启动容器化基础设施(如 Postgres、Redis)并运行迁移;支持 SetupSuite/TearDownSuite 管理容器生命周期,SetupTest 在每个测试前清空表、重建 mock 并重新初始化被测对象;支持表驱动子测试、副作用捕获(如记录发送的邮件)以及多层断言(返回值、数据库记录、副作用、错误路径下的无副作用)。
使用方式:测试文件放在 test/integration/ 下并镜像 internal/ 源码路径,例如 internal/modules/identity/usecase/user/user_register_usecase.go 对应 test/integration/modules/identity/usecase/user/user_register_usecase_test.go。文件顶部加 //go:build integration 构建标签,包名用 _test 后缀。真实依赖用 itestkit 容器,外部服务(邮件、短信、外部 API、token 生成器、指标、日志)用 mock。运行命令为 make test-integration。
限制与约定:测试需遵循 Arrange-Act-Assert 模式并显式注释;断言需覆盖输出字段、数据库状态、副作用和错误路径;基础设施 mock 用 .Maybe(),领域 mock 用 .Run() 捕获副作用;不要使用 .AssertExpectations(s.T());单行不超过 120 字符;含结构体方法的文件不添加独立函数。具体项目配置、依赖版本和完整命令以实际仓库为准,资料未提供更多环境要求。