go-doc-单元测试

单元测试

Go语言自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试,testing框架和其他语言中的测试框架类似,可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的压力测试用例。通过测试用例可以解决如下问题:

  1. 确保每个函数是可运行,并且允许结果是正确的
  2. 确保写出来的代码性能是好的
  3. 单元测试能及时的发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的终点在于发现程序设计上的一些问题,让程序能够在高并发的情况下还能保持稳定。

测试注意点

  1. 测试文件一定要以_test.go结尾命名,不然找不到文件
  2. 测试用例函数必须以Test开头,一般来说就是Test+被测试的函数名
  3. 测试函数的形参必须是t *testing.T
  • Benchmark

基础测试的函数命名方式 func BenchmarkXxx(b *testing.B)

1
2
3
4
5
6
7
8
9
func TestXXXX(t *testing.T) {
// ....
}

func BenchmarkXXXX(b *testing.B) {
for i := 0; i < b.N; i++ {
// ....
}
}

go官网测试标识文档

命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 禁用缓存
-count=1

# 运行所有的测试用例,如果运行正确,无日志,错误时,会输出日志
go test

# 运行所有的测试用例,无论正确失败都输出日志
go test -v

# 测试指定文件
go test -v xxx1_test.go xxx2_test.go 依赖的.go文件 ...

# 测试指定方法
# 使用失败
# go test -v -run TestXXXX1

# 对当前目录下的所有性能函数进行性能测试
go test -bench=".*"

# 对当前目录下的所有性能函数进行5次性能测试
go test -bench=".*" -count=5