golang单元测试简述

  Golang中内置了对单元测试的支持,不须要像Java同样引入第三方Jar才能进行测试,下面将分别介绍Golang所支持的几种测试;windows

1、测试类型

  Golang中单元测试有功能测试、基准测试、示例测试或称示例函数三种;
  功能测试必须以TestXXX函数名出现,基准测试必须以BenchmarkXXX函数名出现,示例函数必须以ExampleXXX函数名出现。架构

//功能测试
func TestXXX(t *testing.T){
}

//基准测试
func BenchmarkXXX(b * testing.B){
}

//示例函数
func ExampleXXX(){
}

2、功能测试

  函数名: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)
       }
    }
}

2、基准测试

  用于对程序功能进行可定量、可对比的性能测试;
  函数名: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%code

3、示例测试blog

func ExampleMul() {
a := Mul(2, 2)
    fmt.Println(a)
//Output: 41
}

  输出内容到标准输出,参数没有限制;go test执行时会监测实际输出与注释中的指望结果是否一致,一致时测试经过,不一致则测试失败;get

经过:

失败:

=== RUN   ExampleMul
--- FAIL: ExampleMul (0.00s)
got:
4
want:
41
FAIL
coverage: 100.0% of statements

获得了:4,须要的是:41 测试失败;

4、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

相关文章
相关标签/搜索