Golang中内置了对单元测试的支持,不需要像Java一样引入第三方Jar才能进行测试,下面将分别介绍Golang所支持的几种测试;
一、测试类型
  Golang中单元测试有功能测试、基准测试、示例测试或称示例函数三种;
  功能测试必须以TestXXX函数名出现,基准测试必须以BenchmarkXXX函数名出现,示例函数必须以ExampleXXX函数名出现。
//功能测试
func TestXXX(t *testing.T){
}
//基准测试
func BenchmarkXXX(b * testing.B){
}
//示例函数
func ExampleXXX(){
}
二、功能测试
函数名:TestXxx,以Test为前缀的功能测试函数 参数类型:*testing.T
功能函数:
func(a, b int) Mul {
  return b * b
}
测试函数:
func TestMul(t *testing.T) {
arr := [...]int{2, 4, 6}
    expected := []int{8, 12}
for j := 0; j < 2; j++ {
       result := Add(arr[j], arr[j+1])
	   if result != expected[j] {
		 //失败后停止后序逻辑
		  t.Fatalf("input is %d, the expected is %d, the actual %d", arr[j], expected[j], result)
		 //失败后继续执行后序逻辑
		//t.Errorf("input is %d, the expected is %d, the actual %d", arr[j], expected[j], result)
	   }
    }
} 
二、基准测试
用于对程序功能进行可定量、可对比的性能测试; 函数名:BenchmarkXxx,以Test为前缀的测试功能函数 参数类型:*testing.B
func BenchmarkMul(b *testing.B) {
for i := 0; i < b.N; i++ {
	Mul(i, i)
    }
}
执行结果:
goos: windows
goarch: amd64
pkg: solinx.co/LCache/test
BenchmarkMul-12    	1000000000	         0.323 ns/op
PASS
coverage: 100.0% of statements
ok      solinx.co/LCache/test   0.499s
结果分析: 执行执行环境:windows 架构:amd64 包路径 BenchmarkMul-12:总共12个逻辑cpu 函数执行时间 0.499秒 测试代码覆盖率:100%
三、示例测试
func ExampleMul() {
a := Mul(2, 2)
    fmt.Println(a)
//Output: 41
}
输出内容到标准输出,参数没有限制;go test执行时会监测实际输出与注释中的期望结果是否一致,一致时测试通过,不一致则测试失败;
通过:

失败:
=== RUN   ExampleMul
--- FAIL: ExampleMul (0.00s)
got:
4
want:
41
FAIL
coverage: 100.0% of statements
得到了:4,需要的是:41 测试失败;
四、go test 参数介绍
  -count: 设置执行测试函数的次数, 默认 1
  -run: 执行功能测试函数, 可正则匹配
  -bench: 执行基准测试函数, 可正则匹配
  -benchtime: 基准测试最大探索时间
  -parallel: 设置功能测试函数最大并发执行数
  -v: 是展示测试过程信息
  -cover:显示测试代码覆盖率
  -list : 列出所匹配的测试函数,不执行
执行与Test匹配的测试函数
go test -run Test