内容简介:前几天,Leader让我学习GO单元测试并且组内分享。经过这些天在网上查阅资料和实践。总结出以下内容。基础知识:GO为我们提供了测试框架,
单元测试
前几天,Leader让我学习 GO 单元测试并且组内分享。经过这些天在网上查阅资料和实践。总结出以下内容。
基础知识:
GO为我们提供了测试框架, go test
,让我们能够很容易的进行单元测试。
但必须遵守以下几点规则:
最好
只要遵守以上规则,很容易可以编写一个GO单元测试。
在网上查阅资料时,看到有一篇文章写道:
测试代码的文件放置的位置可以随意?
顿时感觉GO真的好智能,迫不及待的尝试了一下:
难道需要指定路径?
可能是我没有理解这句话的含义,但我个人感觉,还是放在一个目录(包)下吧。
package
也可以随意写?
尝试后结论,不能。
写一个简单的单元测试用例
add.go
package add func Add(a, b int) int{ return a+b }
add_test.go
package add import "testing" func TestAdd(t *testing.T){ if sum:=Add(1,2); sum!=3{ t.Error("fail")//日志一般要写成f(x)=y, want z的形式 } else { t.Log("success") } }
go test -v
即可看到测试结果
(这里有一点我踩过的小坑,当想指定测试文件的时候 go test file_test.go
会报错,因为需要后面还需要接上被测试的文件: go test file_test.go file.go
)
只是一个最简单的基本测试。另一种测试方法叫做:表组测试。其实就是多个基本测试。
将上面test简单改造
package add import "testing" func TestAdd(t *testing.T){ var tests = []struct{ date []int want int }{ {[]int{1, 2}, 3}, {[]int{2, 5}, 7}, {[]int{3, 9}, 11}, } for _,v := range tests{ if sum:=Add(v.date[0], v.date[1]); sum!=v.want{ t.Errorf("Add(%d, %d) = %d, want %d", v.date[0], v.date[1], v.date[0]+v.date[1], v.want) } else { t.Log("success") } } }
运行结果
能够清楚看到每组测试结果。这种形式能够轻易添加测试用例。
以上所述就是小编给大家介绍的《GO随笔-单元测试-基础测试》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Vue 应用单元测试的策略与实践 02 - 单元测试基础
- Vue 应用单元测试的策略与实践 04 - Vuex 单元测试
- Vue 应用单元测试的策略与实践 03 - Vue 组件单元测试
- Angular单元测试系列-Component、Directive、Pipe 以及Service单元测试
- 单元测试,只是测试吗?
- 单元测试和集成测试业务
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。