单元测试
文件原则
- 文件名以 "_test.go" 结尾
- 必需导入 "testing" 包
- 所有测试用例函数以 "Test" 开头
- 执行顺序为源码中的函数顺序
- 测试用例函数的参数为 "testing.T",可记录测试信息
- 测试用例函数名称[TestXXX],其中 XXX 必需为大写字母开头,即能导出
- testing.T中的[Error,Errorf,FailNow,Fatal,FatalIf]函数都表示测试不通过; Log函数,可以输出测试信息
测试操作
go test 会在当前目录下查找 _test.go 文件,然后执行里面的 TestXXX 函数
默认 go test 不会显示测试通过的用例,除非添加参数 [ -v ]
压力测试
原则
- 基本原则与单元测试相同
- 其中第3点,测试函数的名称开头为: Benchmark
- 其中第5点,函数的参数为: testing.B
操作
go test 默认不执行压力测试,需要添加 -test.bench 参数,支持正则
语法:
go test -test.bench="压力测试函数名" # 其中压力测试函数执行正则
go test -test.bench=".*" #表示所有压力测试函数
例子
func Benchmark_Division(b *testing.B) {
for i := 0; i < b.N; i++ { //use b.N for looping
Division(4, 5)
}
}
func Benchmark_TimeConsumingFunction(b *testing.B) {
b.StopTimer() //调用该函数停止压力测试的时间计数
//做一些初始化的工作,例如读取文件数据,数据库连接之类的,
//这样这些时间不影响我们测试函数本身的性能
b.StartTimer() //重新开始时间
for i := 0; i < b.N; i++ {
Division(4, 5)
}
}