SuperAPI AI 工具集

table-driven-test

测试与质量

查看项目

更新于 10-15 20:13

技能介绍

用途:这是 CockroachDB 仓库中的 Go 表驱动测试编写指南,用于统一测试风格、减少重复并提升可读性。表驱动测试把多个用例定义在结构体切片中,再循环执行同一套测试逻辑。

适用与不适用:当有 3 个以上仅输入输出不同的相似用例、测试逻辑模式一致时适合使用;只有 1 至 2 个简单用例、每个用例逻辑完全不同或初始化与清理差异很大时建议跳过。它不同于使用 testdata 文件的 Datadriven 测试。

主要原则:只声明必要字段;结构体字段按“输入在前、验证字段在后”排序,验证字段以 expected 前缀命名;每个用例只关注一个行为;用例之间相互独立;用例名称描述意图或场景而非重复输入数据。

断言:多数检查使用 require.(失败即停止),需要看到多个失败时才用 assert.。常见写法包括 require.NoError、require.Error、require.ErrorContains、require.Equal、require.Len、require.Contains。避免在 require.Equal 等断言前做多余的 require.NotNil。错误用例可用 expectedErr 字段配合 require.ErrorContains 判断。

辅助函数:当复杂结构体初始化掩盖测试意图、模式重复或需构建复合数据结构时,可用变参辅助函数减少样板代码,使测试数据读起来像规格说明;简单值或一次性用例不必引入。

集成测试:需要数据库服务器的测试参见 /integration-test 技能,本文的表驱动模式同样适用于单元与集成测试。

限制:资料未提供该技能的安装命令、平台支持、收费方式或具体版本要求。