golang单元测试简述

  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

文章首发地址:Solinx
https://mp.weixin.qq.com/s/nqnXiOT_CfD6qWeE6xsrhw

猜你喜欢

转载自www.cnblogs.com/softlin/p/12364471.html