内容简介:基础知识:GO为我们提供了测试框架,go test,让我们能够很容易的进行单元测试。但必须遵守以下几点规则:
元测试
总结一些单元测试的相关类容以供以后进行学习与参考
基础知识:
GO为我们提供了测试框架,go test,让我们能够很容易的进行单元测试。
但必须遵守以下几点规则:
* 测试文件必须以_test.go结尾 * 单元测试文件名_test.go前面的部分最好是被测方法所在 go 文件的文件名。(不一样也可以运行go test,但是应该遵守统一的规范) * 单元测试的函数必须以Test开头,是公开函数 * 测试函数必须接收一个指向testing.T类型的指针(依测试目的而定,如主要是测试性能,则用testing.B等),并且不能返回任何值。 * 函数名最好是Test+测试函数名(依测试类型而定,Benchmark等)。 `其中Bench开始的是压力测试`
若是遵循上述的几点规则,可以很容易些出一个测试环节
写一个简单的单元测试用例
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") } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- C++语言的单元测试与代码
- Go 语言基础 - 编写单元测试
- go语言的测试单元的使用
- Junit单元测试案例(测试语言Java)
- Go语言实战笔记(二十一)| Go 单元测试
- C++语言的单元测试与代码覆盖率
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Developer's Guide to Social Programming
Mark D. Hawker / Addison-Wesley Professional / 2010-8-25 / USD 39.99
In The Developer's Guide to Social Programming, Mark Hawker shows developers how to build applications that integrate with the major social networking sites. Unlike competitive books that focus on a s......一起来看看 《Developer's Guide to Social Programming》 这本书的介绍吧!