Go语言中带有一个轻量级的测试框架
testing
和go test
命令来实现单元测试及性能测试。单元测试可以解决
- 确保每个函数都是可运行且结果正确
- 确保代码性能完好
- 单元测试可以及时发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让程序能够在高并发的情况下还能保持稳定
注意:
- 文件名必须以
xxx_test.go
方式命名 - 测试函数名格式:
func Testxxx(t *Testing.T) {}
(一定要以Testxxx作为函数名,t *Testing.T作为参数) - 测试的文件和测试文件要在同一包下
执行测试:
# 如果运行正确则无日志,运行错误则输出日志
go test# 运行正确或错误都输出日志
go test -v# 如果包下有多个要测试的文件,可以通过指定文件名测试
go test -v xxx.go xxx.go# 测试文件中的单个方法
go test -v -文件名.run 方法名
data_test.go
package testimport ("testing"
)func TestAdd(t *testing.T) {result := Add(1, 2)if result != 3 {t.Fatalf("sum err: 期望值=%v 实际值=%v\n", 3, result)}
}func TestMinus(t *testing.T) {result := minus(1, 2)if result != -1 {t.Fatalf("sum err: 期望值=%v 实际值=%v\n", -1, result)}
}
testdata.go
package testfunc Add(a, b int) int {return a + b
}func minus(a, b int) int {return a - b
}
执行:
itzhuzhu@itzhuzhudeMacBook-Pro test % go test -v
=== RUN TestAdd
--- PASS: TestAdd (0.00s)
=== RUN TestMinus
--- PASS: TestMinus (0.00s)
PASS
ok basics/src/day11/test 0.489s
itzhuzhu@itzhuzhudeMacBook-Pro test %