表驱动测试

1. 什么是表驱动测试

通过定义测试用例表(slice),循环执行相同的测试逻辑,便于批量测试。

2. 示例代码

func TestAdd(t *testing.T) {
    tests := []struct {
        name string
        a, b int
        want int
    }{
        {"positive", 1, 2, 3},
        {"zero", 0, 0, 0},
        {"negative", -1, -2, -3},
    }

    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            got := Add(tt.a, tt.b)
            if got != tt.want {
                t.Errorf("Add(%d, %d) = %d; want %d", tt.a, tt.b, got, tt.want)
            }
        })
    }
}

`

3. 优点

  • 结构清晰,易于维护
  • 易扩展新用例
  • 支持子测试 t.Run

表驱动测试是 Go 单元测试中的推荐实践,适合多场景验证。