golang单元测试

文章目录

testing

testing:
1 测试代码放在待测试代码的目录下(一个包内),以_test.go结尾
2 对于测试函数,其命名需要以“Test”开头,并且其后的字符串的第一个字符必须是大写,其次,测试函数的参数必须为(t *testing.T)

func TestUserLogin_normal(t *testing.T) {

3 go test -v .输出测试详细信息,指定函数go test -v -run funcname
4 查看测试用例覆盖率 go test -cover -coverprofile=filename.out, go tool -html =filename
在这里插入图片描述

eg:

被测函数:
在这里插入图片描述
test代码:
1,定义test结构体,包含输入,输出,
2,将测试用例组织成map,可以为用例name,value为test结构体
3,for循环开启测试,t.Run可以输出测试过程
在这里插入图片描述
reflect.DeepEqual()通过reflect对比两个引用型数据的底层是否相等

benchmark

被测函数还是上面split函数,benchmark代码如下

benchmark原理是执行被测函数执行足够多的次数以达到性能采样

在这里插入图片描述
运行:go test -bench=split

在这里插入图片描述
输出信息:
BenchmarkSplit-8 cpu进程数 相当于gomaxproc
10000000 执行次数
207 ns/op 每执行1次耗时

查看内存数据:go test -bench=split -benchmem
在这里插入图片描述
112 B/op 每执行一次消耗内存
3 allocs/op 每执行一次需要分配几次内存

以上可知,split函数每执行一次需要分配3次内存,分配内存比较耗时,分析代码,每append一次,都需要申请内存,优化代码,在函数开始先通过make申请足够的内存,避免append时重新申请

在这里插入图片描述

执行
在这里插入图片描述
结果很明显,只需要分配一次内存,性能提高一倍,内存降低将近1/3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值