9.1 测试

一、传统测试 vs 表格驱动测试

  1. 传统测试:

    1. 测试数据和测试逻辑混在一起

    2. 出错信息不明确

    3. 一旦一个数据出错,测试全部结束

  2. 表格驱动测试

    1. 分离的测试数据和测试逻辑

    2. 明确的出错信息

    3. 可以部分失败

    4. go语言的语法使得我们更容易实践表格测试

二、表格驱动测试示例

  1. 被测试代码:勾股定理

    func calcTriangle(a, b int) int {
    	var c int
    	c = int(math.Sqrt(float64(a*a + b*b)))
    	return c
    }
  2. 测试文件编写

    func TestAdd(t *testing.T) {
    	tests := []struct{ a, b, c int }{
    		{3, 4, 5},
    		{5, 12, 13},
    		{8, 15, 17},
    		{12, 35, 37},
    		{4, 6, 9},
    		{300, 400, 500},
    		{11, 12, 13},
    	}
    
    	for _, tt := range tests {
    		if actual := calcTriangle(tt.a, tt.b); actual != tt.c {
    			t.Errorf("测试结果异常,参数:%d, %d, %d", tt.a, tt.b, tt.c)
    		}
    	}
    }

    要求:文件命名必须以xxxx_test命名

  3. 运行方式

    1. 命令行:指定目录下go test .

    2. IDEA:直接运行即可(main函数)

Last updated

Was this helpful?