Golang中内置了对单元测试的支持,不须要像Java同样引入第三方Jar才能进行测试,下面将分别介绍Golang所支持的几种测试;windows
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%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 测试失败;
-count: 设置执行测试函数的次数, 默认 1
-run: 执行功能测试函数, 可正则匹配
-bench: 执行基准测试函数, 可正则匹配
-benchtime: 基准测试最大探索时间
-parallel: 设置功能测试函数最大并发执行数
-v: 是展现测试过程信息
-cover:显示测试代码覆盖率
-list : 列出所匹配的测试函数,不执行
执行与Test匹配的测试函数
go test -run Test
文章首发地址:Solinx
https://mp.weixin.qq.com/s/nqnXiOT_CfD6qWeE6xsrhw