全球滚动:GoLang基础学习之go test测试
来源:脚本之家    时间:2022-08-09 15:56:06
目录
1.介绍2.函数3.测试函数格式3.1格式3.2失败示例3.3成功示例13.4成功示例23.5成功示例33.6成功实例44.基准函数4.1成功实例14.2成功实例24.3性能比较函数总结

1.介绍

Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具; go test 命令是go语言内置的命令

go test命令是一个按照一定约定和组织的测试代码的驱动程序
在我们执行了go tets命令之后,这个命令会自动的帮我们寻找当前包下面在包目录内以_test.go为后缀名的源代码文件进行测试,同时解析内部所有以大写的Test开头的测试函数(注:不会被go build编译到最终的可执行文件中)

2.函数

逻辑行为:比如举一些特例,来检查是否达到预期值


(资料图片)

性能基准测试相当于调用10万次或者1万次,看看它的平均的执行时间、内存的是申请、内存的消耗等等

3.测试函数格式

3.1格式

3.2失败示例

如下结构以及代码内容

注:执行完go test后,结构以及代码内容没有任何变化
一个中文所占的字节在uf8中至少占用的都是3个字节,甚至有的是4个字节,问题出现在:s = s[i+1:]这一行

3.3成功示例1

如下结构以及代码内容

注:执行完命令后结构以及代码内容没有任何变化
go test:
显示pass,说明测试用例通过了

3.4成功示例2

如下结构以及代码内容

注:执行完命令后结构以及代码内容没有任何变化
显示pass,说明测试用例通过了

3.5成功示例3

如果有多个测试用例的话,可以写成一个测试组,测试组里可以定义一个测试用例的结构体,然后分别的创建多个测试用例的结构体实例,然后写一个for循环去跑一下这个测试用例

注:执行完命令后结构以及代码内容没有任何变化
go test
go test -v:
可以查看的更详细

3.6成功实例4

注:执行完命令后结构以及代码内容没有任何变化
用t.run的话,里面传入一个匿名函数的话,go test -v可以看的更清晰
go test -run=Split/chinese的换可以指定某个测试用例单独测试
go test -cover校验测试覆盖率(即比如我们的测试函数有6行代码,如果我们的测试用例把这6行代码都执行了,那么这是最好的了,覆盖率是100%,现实情况下很少有100%的情况,测试覆盖率基本上就足够了,

4.基准函数

4.1成功实例1

注:执行完命令后结构以及代码内容没有任何变化

go test -bench=Split :(注意:所有的数据不同的电脑都不一样)
BenchmarkSplit-16:  -16是操作系统真正干活的进程数,不同的电脑不一样
1731301是指Spilt执行的次数
629.1ns是指:每一次操作耗费629.1纳秒

go test -bench=Split -benchmem:   (注意:所有的数据不同的电脑都不一样)
查看操作的内存的数据
112 B/op: 每一次操作消耗的是112个字节
3 allocs/op : 每一次操作它会做三次的内存申请(通过看这个就可以来做代码优化,由测试来不断优化我们的程序),查看代码后发现原因是append会进行内存申请,现在的解决办法就是用make函数被做统一的内存申请

4.2成功实例2

go test -bench=Split -benchmem:  (注意:所有的数据不同的电脑都不一样)
发现各个数据都减少了

4.3性能比较函数

应用场景:某些函数当我们传入的参数变量不一样的话,执行的次数也不一样,这种情景就可以用性能比较函数,比如

总结

到此这篇关于GoLang基础学习之gotest测试的文章就介绍到这了,更多相关GoLanggotest测试内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

关键词: 测试用例 测试函数 比较函数 希望大家 操作系统

上一篇:

下一篇:

X 关闭

X 关闭