Go语言中如何进行测试


声明:本文转载自https://my.oschina.net/ruoli/blog/1816384,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

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

 

1、调试和测试

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

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

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

                

            传统测试的缺点:

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

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

            

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

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

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

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

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

package main  import ( "testing" 	"math" ) //传入两个 int 类型数据 a、b,返回 返回 a²+b² 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 }  //对方法进行性能测试 func BenchmarkTriangle(b *testing.B) {  	for i:=0;i<b.N;i++ { 		if actual := Triangle(3,4); actual != 5 { 			b.Errorf("Triangle(%d, %d); 实际结果: %d; 期望结果: %d",3, 4, actual, 5) 		} 	} 	//输出结果(在短时间内执行了 2000000000 次 测试,每次耗时 0.42 ns): 	//goos: windows 	//goarch: amd64 	//2000000000	         0.42 ns/op 	//PASS 	 }

 

        Goland 编译器会 自动识别到 TestTriangle、BenchmarkTriangle 方法为测试方法,可以使其直接执行,针对性能测试,我们可以使用Go提供的 Go tool 工具查看是什么操作占用了过多性能。

本文发表于2018年05月22日 10:00
(c)注:本文转载自https://my.oschina.net/ruoli/blog/1816384,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1605 讨论 1 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1