Go 语言学习之测试

概念:

在 Go 语言中,Go 的测试方法依赖于命令 go test,go test 子命令是 Go 语言包的测试驱动程序,测试文件的文件名以 _test.go 结尾。每个测试文件必须导入 testing 包。

测试函数分为三种,分别是功能测试函数,函数名以 Test 开头,用来检测一些程序逻辑的正确性,go test 命令运行测试函数,输出结果是 PASS 或 FAIL;性能测试函数,函数名以 Benchmark 开头,用来测试某些操作的性能,go test 运行测试函数,得到操作的平均执行时间;示例函数,函数名以 Example 开头,用来提供机器检查过的文档。

go test 工具扫描 *_test.go 文件寻找测试函数,并生成一个临时的 main 包来调用它们,然后编译和运行,并汇报测试结果,最后清空临时文件。

单元测试 :

在 Go 语言中,标准库 testing 包的类型 T 提供一些方法来控制测试代码的行为。

testing 包类型 T 常用方法:

|----------|---------|
| 方法 | 描述 |
| Fail | 失败,继续执行 |
| FailNow | 失败,终止执行 |
| SkipNow | 跳过,停止执行 |
| Log | 输出错误信息 |
| Parallel | 并行执行 |

go test 命令的参数 -v,可以输出包中每个测试用例的名称和执行时间;参数 -run 是一个正则表达式,可以限制 go test 只运行测试函数名称匹配给定模式的测试函数。

性能测试:

testing 包类型 B 的 N 方法,可以逐步调整循环次数,直到可以获取准确的性能测试结果。

go test 默认不会执行性能测试函数,需要使用参数 -bench,还可以使用 -cpu 参数设定并发限制,使用 -benchtime 参数设置最小测试时间来增加循环次数。

覆盖率:

go test 使用参数 -cover 可以获取代码覆盖率,检测测试代码本身的编写质量,从而可以发现测试代码的缺陷并改进。

相关推荐
csbysj202016 小时前
Vue.js 混入:深入理解与最佳实践
开发语言
Gerardisite17 小时前
如何在微信个人号开发中有效管理API接口?
java·开发语言·python·微信·php
Want59517 小时前
C/C++跳动的爱心①
c语言·开发语言·c++
lingggggaaaa17 小时前
免杀对抗——C2远控篇&C&C++&DLL注入&过内存核晶&镂空新增&白加黑链&签名程序劫持
c语言·c++·学习·安全·网络安全·免杀对抗
coderxiaohan18 小时前
【C++】多态
开发语言·c++
gfdhy18 小时前
【c++】哈希算法深度解析:实现、核心作用与工业级应用
c语言·开发语言·c++·算法·密码学·哈希算法·哈希
陈天伟教授18 小时前
基于学习的人工智能(5)机器学习基本框架
人工智能·学习·机器学习
我先去打把游戏先18 小时前
ESP32学习笔记(基于IDF):基于OneNet的ESP32的OTA功能
笔记·物联网·学习·云计算·iphone·aws
初願致夕霞18 小时前
学习笔记——基础hash思想及其简单C++实现
笔记·学习·哈希算法
Eiceblue18 小时前
通过 C# 将 HTML 转换为 RTF 富文本格式
开发语言·c#·html