【go从零单排】go语言中testing的几种类型

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

Go 语言中的 testing 包是用于编写和运行测试的标准库。它提供了丰富的功能,帮助开发者创建单元测试、基准测试以及示例测试。

💻代码

Example

package mainimport ("fmt""testing" //testing:提供测试功能的包,包含了编写和运行测试所需的工具。
)// IntMin 函数接受两个整数 a 和 b,返回较小的那个值。
func IntMin(a, b int) int {if a < b {return a}return b
}// TestIntMinBasic 是一个基本的测试用例,测试 IntMin(2, -2) 的返回值是否为 -2。
// 如果返回值不符合预期,使用 t.Errorf 记录错误信息。
func TestIntMinBasic(t *testing.T) {ans := IntMin(2, -2)if ans != -2 {t.Errorf("IntMin(2, -2) = %d; want -2", ans)}
}// TestIntMinTableDriven 是一个表驱动测试,用于测试多个输入情况。
func TestIntMinTableDriven(t *testing.T) {//定义了一个结构体数组 tests,每个结构体包含两个输入值 a 和 b,以及期望的返回值 want。var tests = []struct {a, b intwant int}{{0, 1, 0},{1, 0, 0},{2, -2, -2},{0, -1, -1},{-1, 0, -1},}for _, tt := range tests {testname := fmt.Sprintf("%d,%d", tt.a, tt.b)//用 t.Run 方法为每个测试用例创建一个子测试,便于独立运行和报告结果。t.Run(testname, func(t *testing.T) {//在循环中,调用 IntMin 函数,并检查返回值是否与预期相符。ans := IntMin(tt.a, tt.b)if ans != tt.want {t.Errorf("got %d, want %d", ans, tt.want)}})}
}// BenchmarkIntMin 是一个基准测试,用于测量 IntMin 函数的性能。
func BenchmarkIntMin(b *testing.B) {//b.N 是基准测试框架自动确定的迭代次数,循环调用 IntMin(1, 2),以测量其执行时间。for i := 0; i < b.N; i++ {IntMin(1, 2)}
}

Example2

package mainimport ("fmt""testing"
)// 示例函数
func Add(a, b int) int {return a + b
}// 单元测试
func TestAdd(t *testing.T) {got := Add(2, 3)want := 5if got != want {t.Errorf("Add(2, 3) = %d; want %d", got, want)}
}// 基准测试
func BenchmarkAdd(b *testing.B) {for i := 0; i < b.N; i++ {Add(2, 3)}
}// 示例测试
func ExampleAdd() {fmt.Println(Add(2, 3))// Output: 5
}

命令行参数

package mainimport ("fmt""os"
)func main() {argsWithProg 包含所有命令行参数,包括程序名称。argsWithProg := os.Args //os.Args 是一个字符串切片,包含命令行参数。第一个元素是程序的名称,后面的元素是传递给程序的参数//argsWithoutProg 通过切片操作 os.Args[1:] 获取不包含程序名称argsWithoutProg := os.Args[1:]//这行代码尝试获取第四个命令行参数(索引为 3),并将其赋值给变量 arg。arg := os.Args[3] //注意:如果命令行参数不足四个,这行代码会导致运行时错误(index out of range)。fmt.Println(argsWithProg)fmt.Println(argsWithoutProg)fmt.Println(arg)
}

🔍理解

  • 使用 testing.T 类型来进行单元测试,提供了报告错误和失败的功能。
  • 使用 testing.B 类型来编写基准测试,测量代码的性能和执行时间。
  • 使用 t.Error 或 t.Errorf 方法报告错误。
  • 使用 t.Skip 方法跳过某个测试。
  • 使用 go test 命令运行测试
  • 使用 -bench 标志运行基准测试。
  • 在实际使用中,应该添加对命令行参数数量的检查

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/14256.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[笔记]自动化中破解验证码

01需求分析 1.打开一个chrome浏览器 2.输入论坛的网址: http://114.116.2.138:8090/forum.php 3.输入用户名admin 4.输入密码123456 5.点击登录 6.输入验证码 7.再点击登录 02准备工作 selenium环境搭建 参考地址: https://blog.csdn.net/python_jeff/article/details…

2024下半年软考系统架构设计师案例分析题试题与答案

解析中包含所有真题图片 解析中包含所有真题图片 解析中包含所有真题图片 解析中包含所有真题图片 第一题 解析见&#xff08;点我&#xff09;&#xff1a;https://blog.csdn.net/u014624241/article/details/143701384 第二题 解析见&#xff08;点我&#xff09;&#…

使用 Python 和 Selenium 解决 hCaptcha:完整指南

如果你跟我一样&#xff0c;你可能也曾遇到过在抓取数据或自动化任务时试图绕过 hCaptcha 的挫折感。你懂的&#xff0c;hCaptcha 弹出来&#xff0c;你的脚本就戛然而止。但别担心&#xff01;我们都经历过。好消息是&#xff0c;用 Python 和 Selenium 解决 hCaptcha 挑战并不…

[HAOI2015] 树上染色(树形 DP)

题目传送门https://www.luogu.com.cn/problem/P3177 解题思路 设 表示以 为根的子树染 个黑点的最大收益值。 设一共有 个节点&#xff0c;要染 个点。 完成 DP 状态的设计后&#xff0c;开始推导转移方程…… 对于一个点 &#xff0c;它下面有一条通向 &#xff0c;权…

Python学习从0到1 day28 Python 高阶技巧 ⑧ 递归

那就祝我们爬不同的山&#xff0c;还能回到同一条路上&#xff0c;不是时时见面&#xff0c;但是时时惦记之人 —— 24.11.13 递归 1.什么是递归 递归在编程中是一种非常重要的算法 递归&#xff1a;即方法(函数)自己调用自己的一种特殊编程写法 函数调用自己&#xff0c;即…

代码随想录算法训练营第二十二天|491.递增子序列、46.全排列、47.全排列 II

491.递增子序列 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;回溯算法精讲&#xff0c;树层去重与树枝去重 | LeetCode&#xff1a;491.递增子序列_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦…

二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root [1,null,2] 输出…

要读文献 | Acta Pharmacol Sin | 上海药物所徐华强团队发表综述:基于生成扩散模型的 AI 驱动抗体设计

近日&#xff0c;来自中国科学院上海药物研究所的徐华强团队在 Acta Pharmacologica Sinica 发表综述文章“AI-driven antibody design with generative diffusion models: current insights and future directions”。文章主要讨论了基于生成扩散模型的抗体设计的最新进展&…

Collections 工具类

在 Java 编程中&#xff0c;集合&#xff08;Collections&#xff09;是处理数据的核心工具之一。为了简化集合操作并提高代码的可读性和可维护性&#xff0c;JDK 提供了一个强大的工具类&#xff1a;java.util.Collections。这个类包含了一系列静态方法&#xff0c;用于对集合…

机器学习引领流体动力学新纪元:CFD、Fluent与OpenFOAM的深度融合

在科技日新月异的今天&#xff0c;机器学习正以前所未有的力量重塑着众多学科领域&#xff0c;其中&#xff0c;流体动力学便是受益匪浅的典范。作为计算流体力学&#xff08;CFD&#xff09;领域的两大巨头&#xff0c;Fluent与OpenFOAM正携手机器学习技术&#xff0c;共同开启…

django入门【05】模型介绍(二)——字段选项

文章目录 1、null 和 blank示例说明⭐ null 和 blank 结合使用的几种情况总结&#xff1a; 2、choices**choices 在 Django 中有以下几种形式&#xff1a;**&#xff08;1&#xff09; **简单的列表或元组形式**&#xff08;2&#xff09; **字典映射形式**&#xff08;3&#…

PL/SQL执行.sql文件

1.编写.sql文件&#xff0c;创建update.sql文件&#xff0c;文件如下&#xff1a; set feedback offset define off--更新表中所有人的年龄update a set age18;prompt Done. 2.打开plsql选择命令窗口&#xff0c;即选择File->New->Command Window&#xff1b; 打开后的…

论文5—《基于改进YOLOv5s的轻量化金银花识别方法》文献阅读分析报告

论文报告&#xff1a;基于改进YOLOv5s的轻量化金银花识别方法 论文报告文档 基于改进YOLOv5s的轻量化金银花识别方法 论文报告文档摘要国内外研究现状国内研究现状国外研究现状 研究目的研究问题使用的研究方法试验研究结果文献结论创新点和对现有研究的贡献1. 目标检测技术2. …

【数据结构】ArrayList与LinkedList详解!!!——Java

目录 一&#x1f31e;、List 1&#x1f345;.什么是List&#xff1f; 2&#x1f345;.List中的常用方法 二&#x1f31e;、ArrayList 1&#x1f34d;.什么是ArrayList? 2&#x1f34d;.ArrayList的实例化 3&#x1f34d;.ArrayList的使用 4&#x1f34d;.ArrayList的遍…

modbus协议 Mthings模拟器使用

进制转换 HEX 16进制 (0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F表示0-15) dec 10进制 n(16进制) -> 10 abcd.efg(n) d*n^0 c*n^1 b*n^2 a*n^3 e*n^-1 f*n^-2 g*n^-3&#xff08;10&#xff09; 10 -> n(16进制) Modbus基础概念 高位为NUM_H&…

微信版产品目录如何制作?

微信作为我国最流行的社交媒体平台&#xff0c;拥有庞大的用户群体。许多企业都希望通过微信来推广自己的产品&#xff0c;提高品牌知名度。制作一份精美、实用的微信版产品目录&#xff0c;是企业微信营销的重要手段。微信版产品目录的制作方法&#xff0c;帮助您轻松入门。 ​…

消息推送之SSE

一、简介 市面上很多系统都有 以上三种的消息提醒。但大多分为2类&#xff0c;一类移动端&#xff0c;一类web端比&#xff0c;通常在服务端会有若干张消息推送表&#xff0c;用来记录用户触发不同事件所推送不同类型的消息&#xff0c;前端主动查询&#xff08;拉&#x…

react中如何在一张图片上加一个灰色蒙层,并添加事件?

最终效果&#xff1a; 实现原理&#xff1a; 移动到图片上的时候&#xff0c;给img加一个伪类 &#xff01;&#xff01;此时就要地方要注意了&#xff0c;因为img标签是闭合的标签&#xff0c;无法直接添加 伪类&#xff08;::after&#xff09;&#xff0c;所以 我是在img外…

微搭低代码入门03函数

目录 1 函数的定义与调用2 参数与返回值3 默认参数4 将功能拆分成小函数5 函数表达式6 箭头函数7 低代码中的函数总结 在用低代码开发软件的时候&#xff0c;除了我们上两节介绍的变量、条件语句外&#xff0c;还有一个重要的概念叫函数。函数是执行特定功能的代码片段&#xf…

Zabbix中文监控指标数据乱码

1&#xff09;点击主机&#xff0c;选择Zabbix server 中的 图形 一项&#xff0c;可以看到当前显示的为乱码 2&#xff09; 下载字体文件&#xff1a; https://gitcode.com/open-source-toolkit/4a3db/blob/main/SimHei.zip 解压unzip -x SimHei.zip 3&#xff09; 替换字体文…