您当前的位置: 首页 > 

PolarDay.

暂无认证

  • 3浏览

    0关注

    144博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Go语言学习笔记8——测试与性能调优

PolarDay. 发布时间:2022-01-25 12:22:54 ,浏览量:3

Go语言编程思想4——测试与性能调优

Debugging Sucks! Testing Rocks! 多做测试,少做调试

Go语言使用表格驱动测试

一、传统测试

正确结果在前,函数结果在后,判断是否相等

在这里插入图片描述

  • 测试逻辑和测试数据混在一起
  • 出错信息不明确
  • 一旦一个数据出错测试全部结束
二、表格驱动测试

将测试数据写在struct中,a + b = c

卸载for循环中判断add(a,b)是否等于c,若不等于再进一步处理

测试文件命名:测试的东西_test(若不按照标准命名则无法执行测试函数),本例文件命名为Triangle_test

测试函数命名需要为Test+测试名称

在这里插入图片描述

  • 分离的测试数据和测试逻辑
  • 明确的出错信息
  • 可以部分失败
  • go语言的语法使得我们更易实践表格驱动测试

func calcTriangle(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, 37},
		{30000, 40000, 50000},
	}

	for _, tt := range tests {
		if actual := calcTriangle(tt.a, tt.b); actual != tt.c {
			t.Errorf("calcTriangle(%d,%d);"+
				"got %d;expected %d",
				tt.a, tt.b, actual, tt.c)
		}
	}
}

在命令行中运行测试,进入test文件目录,运行go test . 在这里插入图片描述

三、代码覆盖率

查看测试代码的代码覆盖率

运行测试函数:run ‘…’ with Coverage 在这里插入图片描述

被测试的代码中,绿色的是覆盖到的,红色是没有覆盖到的,点击绿色部分可以看到覆盖了多少次

在这里插入图片描述

命令行 go test -coverprofile c.out go tool cover -html c.out 在这里插入图片描述

四、性能测试

在Triangle_test文件中继续创建下列函数

注意函数命名需要为Benchmark+测试名称

b.N为测试次数

func BenchmarkTriangle(b *testing.B) {
	aa := 30000
	bb := 40000
	cc := 50000
	for i := 0; i             
关注
打赏
1659342973
查看更多评论
0.0463s