Go语言编程从入门到精通(单元测试、检查覆盖率、基准测试)
2022/1/14 12:33:38
本文主要是介绍Go语言编程从入门到精通(单元测试、检查覆盖率、基准测试),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Go(或Golang)是Google在2007年开发的一种开源编程语言,出自RobertGriesemer、RobPike和KenThompson之手。2009年11月10日,GoogleOpenSourceBlog向全球发布了这款语言:公告指出Go的主要目标是“兼具Python等动态语句的开发速度和C或C++等编译型语言的性能与安全性”。
单元测试testing,测试函数、表格驱动测试、检查代码覆盖率、基准测试性能
单元测试
在Go语言中,单元测试使用gotest命令。
在包目录中,以_test.go结尾的源代码就是gotest的一部分。
*_test.go有三种类型,分别是测试函数、基准函数、示例函数。
测试函数的函数名前缀是Test,目的是测试程序的逻辑性为。
基准函数的函数名前缀是Benchmark,目的是测试程序的性能。
示例函数的函数名前缀是Example,目的是写一些实例文档。
测试函数
左侧代码是主程序,右侧代码为测试程序
在demo1.go中,定义了个Split函数,作用是分割字符串,返回分割后的字符串数组
在demo1_test.go中,定义了一个开头为大写的TestSplit函数,参数为指针类型的*testing.T。
直接在demo1_test.go中使用方法来验证输出结果是否正确。
可以看到分割的内容是符合自己想要的,也就是说函数是没有问题的。
在输出的结果当中,显示了测试的结果是OK,执行时间0.026s
还有一个测试是want,约定了是got变量和want变量
got表示需要测试的值
want表示期望获取的值
还是以上面的为例,进行go want测试
表格驱动测试用于测试大量的测试使用
在右侧demo1_test.go中,
9行:定义了一个结构体列表,字段为s 和sep
13行:声明一个变量tests,类型为结构体切片,并对其赋值
19行:使用for range对tests进行循环,获取值
20行、21行:测试Split函数,并输出内容
或者用下面的方法可以显示详细的测试过程
Demo1_test.go中t.Run(strconv.Itoa(i), func(t *testing.T) {}可以显示详细的测试过程。
检查测试代码的覆盖率
在执行结果中,coverage: 100.0% of statements表示每一行的代码都被执行过了,覆盖率是100%。
检查覆盖率也可以通过可视化的检查
第一步:$ go test -cover -coverprofile=c.out,将测试结果输出到c.out文件中
第二步:$ go tool cover -html=c.out,以html的形式展示测试结果
可以看到红色部分是没有覆盖的地方,蓝色部分是覆盖的地方。
基准测试
执行命令:$ go test -bench=Split
其中Split是测试的函数
在执行结果中:BenchmarkSplit-4表示CPU的核心是4核心, 7316653表示执行的次数, 164.3 ns/op表示每执行一次用的时间,1.400s,表示一共消耗的时间。
在执行命令$ go test -bench=Split -benchmem中,可以显示内存消耗。
48 B/op 表示每次执行消耗的内存,2 allocs/op表示每次执行申请的内存次数
这篇关于Go语言编程从入门到精通(单元测试、检查覆盖率、基准测试)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-012024年每个初学者都应该知道的Django十大技巧
- 2024-09-30云原生周刊:Argo CD v2.13 发布候选版本丨2024.9.30
- 2024-09-29哪个更快:OpenAI Whisper、Google TTS 还是 Piper TTS??
- 2024-09-29MLOps 端到端系统在 Google 云平台(I):赋能预测解决方案
- 2024-09-26通过 gcloud CLI 认证从本地脚本写入 Google Sheets
- 2024-09-24GoLand 新建项目 Enable vendoring support automatically 的作用是什么?-icode9专业技术文章分享
- 2024-09-21MongoDB资料:新手入门与初级应用指南
- 2024-09-20MongoDB教程:初学者必备指南
- 2024-09-05MongoDB入门:快速掌握NoSQL数据库基础
- 2024-08-28go 项目中怎么打印调试-icode9专业技术文章分享