您的位置:首页 > 编程语言 > Go语言

GO Test 单元测试&压力测试

2016-12-08 10:03 169 查看

背景

本文主要介绍golang的一个工具go test

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

go test 单元测试介绍

规则

文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代码

你必须import testing这个包

所有的测试用例函数必须是Test开头

测试用例会按照源代码中写的顺序依次执行

测试函数TestXxx()的参数是testing.T,我们可以使用该类型来记录错误或者是测试状态

测试格式:func TestXxx (t *testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。

函数中通过调用testing.T的Error, Errorf, FailNow, Fatal, FatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。

编译方式

go test . 编译当前文件夹所有test测试用例

go test -p 编译这个包测试

go test -v 打印测试信息(默认不打印测试通过信息)

例子

package test

import "testing"

func TestCount(t *testing.T) {
count := 0
if count != 0 {
t.Error("Test No Accept")
} else {
t.Log("Test Accept")
}
}

func TestCount1(t *testing.T) {
t.Error("Test Error")
}


go test .

![测试结果](/Users/yidwang/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1520990951/QQ/Temp.db/3.png)

go test -v .

![测试结果](/Users/yidwang/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1520990951/QQ/Temp.db/2.png)

go test 压力介绍

规则

压力测试用例必须遵循如下格式,其中XXX可以是任意字母数字的组合,但是首字母不能是小写字母 func BenchmarkXXX(b *testing.B) { … }

在压力测试用例中,请记得在循环体内使用testing.B.N,他默认设置轮询次数,保证程序正常退出

其他约束跟单员测试相同

编译方式

go test不会默认执行压力测试的函数,如果要执行压力测试需要带上参数-bench,例如go test -bench=”.*” 表示测试全部的压力测试函数

go test -count 测试例子执行测试

go test -run=name 要测试的文件名字

例子

package test

import "testing"

func Add(a int, b int) int {
return a + b
}
func Benchmark_Addd(b *testing.B) {
for i := 0; i < b.N; i++ {
Add(i, i*10)
}
}


![测试结果](/Users/yidwang/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1520990951/QQ/Temp.db/4.png)

![测试结果](/Users/yidwang/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1520990951/QQ/Temp.db/6.png)

go test 测试函数介绍中文链接:https://studygolang.com/articles/5494

参考链接:http://studygolang.com/wr?u=http%3a%2f%2fwww.cnblogs.com%2fdiegodu%2fp%2f5464802.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息