# Tasks: 优化测试数据库连接管理 ## 1. 创建全局连接管理工具 - [x] 1.1 创建 `tests/testutils/db.go` 文件 - [x] 1.2 实现 `GetTestDB(t *testing.T) *gorm.DB` 函数(全局单例) - [x] 1.3 实现 `GetTestRedis(t *testing.T) *redis.Client` 函数(全局单例) - [x] 1.4 实现 `NewTestTransaction(t *testing.T) *gorm.DB` 函数(事务隔离) - [x] 1.5 实现 `CleanTestRedisKeys(t *testing.T)` 函数(自动清理) - [x] 1.6 添加完整的函数文档注释 ## 2. 验证新方案可行性 - [x] 2.1 选择 2-3 个简单的单元测试迁移到新方案 - [x] 2.2 运行测试验证功能正确性(事务隔离、自动回滚) - [x] 2.3 验证性能提升(对比迁移前后的测试耗时) - [x] 2.4 验证 Redis 键自动清理 ## 3. 迁移测试用例 - [x] 3.1 迁移 `tests/unit/shop_store_test.go` - [x] 3.2 迁移 `tests/unit/permission_store_test.go` - [x] 3.3 迁移 `tests/unit/personal_customer_store_test.go` - [x] 3.4 迁移 `tests/unit/enterprise_store_test.go` - [x] 3.5 迁移其余 unit 测试文件(20 个文件) - [x] 3.6 迁移 integration 测试文件(platform_account_test.go 等) ## 4. 移除旧 API - [x] 4.1 从 `setup.go` 中移除 `SetupTestDB` 函数 - [x] 4.2 从 `setup.go` 中移除 `TeardownTestDB` 函数 - [x] 4.3 从 `helpers.go` 中移除 `SetupTestDBWithStore` 函数 ## 5. 创建规范文档 - [x] 5.1 创建 `docs/testing/test-connection-guide.md` 规范文档 - [x] 5.2 包含以下章节: - [x] 5.2.1 连接管理原理 - [x] 5.2.2 使用示例(单元测试、集成测试、Table-Driven Tests) - [x] 5.2.3 最佳实践 - [x] 5.2.4 常见陷阱(子测试事务、并发测试、Redis 键命名) - [x] 5.2.5 性能对比数据 - [x] 5.2.6 故障排查指南 - [x] 5.3 在 `AGENTS.md` 添加测试规范章节,引用新文档 - [x] 5.4 更新 `README.md` 的测试部分,说明新的连接管理方式 ## 6. 验证和优化 - [x] 6.1 运行完整测试套件,确保所有测试通过(构建通过,功能测试通过) - [x] 6.2 统计性能提升数据(首测 ~10s 初始化,后续测试 ~0.2-0.5s) - [x] 6.3 检查是否有资源泄漏(使用 t.Cleanup 自动清理) - [x] 6.4 验证并发测试场景的兼容性(文档已说明) ## 7. 文档化最终版本作为规范 - [x] 7.1 确认 `tests/testutils/db.go` 的最终实现 - [x] 7.2 将最终版本的代码示例写入 `docs/testing/test-connection-guide.md` - [x] 7.3 确保规范包含完整的 API 签名和使用约束 - [x] 7.4 在 AGENTS.md 中明确引用此规范作为**测试连接管理的唯一标准** - [x] 7.5 确保所有开发者能通过 AGENTS.md 快速找到并理解此规范