Go语言中如何进行测试

主要讲解在Go语言中如何进行代码测试

1、调试和测试

            在程序开发中应该更多的注重测试而不是调试,即测试的优先级重于调试

2、传统测试与表格驱动测试

        传统测试在大多数情况下使用代码进行的单元测试,示例代码如下:

                

            传统测试的缺点:

  • 测试数据与测试逻辑耦合在一起
  • 出错信息不准确
  • 一旦一个数据出错测试全部结束

        表格驱动测试 就是在传统测试的基础场 对测试数据与测试逻辑相分离,数据像表格一样单独存储,示例如下:

            

        在Go语言中一般采用表格驱动测试,其优点主要有:

  • 分离测试数据与测试逻辑
  • 拥有明确的错误信息
  • 可以部分失败
  • Go语言的语法使我们更容易实现表格驱动测试

3、在Go语言中实现表格驱动测试

        注意事项:测试Go文件命名为:xxx_test.go,在测试Go文件中,测试方法使用大写Test开头,测试方法传入参数为:*testing.T

        现在示例对勾股数方法进行表格驱动的测试,代码如下:

package main

import (
	"testing"
	"math"
)

func Triangle(a, b int) int {
	var c int
	c = int(math.Sqrt(float64(a*a + b*b)))
	return c
}

func TestTriangle(t *testing.T) {
	tests := []struct{ a, b, c int }{
		{3, 4, 5},
		{5, 12, 13},
		{8, 15, 17},
		{12, 35, 36},
		{30000, 40000, 5000},
	}

	for _, tt := range tests {
		if actual := Triangle(tt.a, tt.b); actual != tt.c {
			t.Errorf("Triangle(%d, %d); 实际结果: %d; 期望结果: %d",tt.a, tt.b, actual, tt.c)
		}
	}
	//输出结果:
	//=== RUN   TestTriangle
	//--- FAIL: TestTriangle (0.00s)
	//	21_Test1_test.go:25: Triangle(12, 35); 实际结果: 37; 期望结果: 36
	//	21_Test1_test.go:25: Triangle(30000, 40000); 实际结果: 50000; 期望结果: 5000
	//FAIL
}
扫描二维码关注公众号,回复: 973568 查看本文章

猜你喜欢

转载自my.oschina.net/ruoli/blog/1816384