Closed wtysos11 closed 3 years ago
本文目的 复习并整理go test相关知识 要求:能让我在短时间内通过阅读该文掌握写一份go单元测试所需要的知识
一般测试文件应该与被测试文件放在同一个目录下,比如被测试代码为intutils.go时,被测试代码应该写为intutils_test.go。
intutils.go
intutils_test.go
通常会编写一个名称以Test开头的函数来创建测试(这个我记得是必须的,不然识别不出来)。例如GoLand自动生成的测试文件(Alt+Insert,之前写Java的时候经常用这个来生成DAO)
func TestTest(t *testing.T) { type args struct { a int } tests := []struct { name string args args want int }{ // TODO: Add test cases. //{name,args{},want},... } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := Test(tt.args.a); got != tt.want { t.Errorf("Test() = %v, want %v", got, tt.want) } }) } }
一些常用函数:
t.Error*
t.Fail*
t.Run
go test -v
参考资料
基础知识
一般测试文件应该与被测试文件放在同一个目录下,比如被测试代码为
intutils.go
时,被测试代码应该写为intutils_test.go
。通常会编写一个名称以Test开头的函数来创建测试(这个我记得是必须的,不然识别不出来)。例如GoLand自动生成的测试文件(Alt+Insert,之前写Java的时候经常用这个来生成DAO)
一些常用函数:
t.Error*
会报告测试失败的信息,然后继续进行测试(wildcard,通配符,不是指针)t.Fail*
会报告测试失败的信息,然后立即终止测试t.Run
可以运行一个subtests子测试。一个子测试对应着tests数组中的一行数据,在go test -v
中会分开显示。