VSCode配置Golang单元测试实例

简介: 说到代码的健壮性,单元测试是少不了的,基本上所有语言都有自己的单元测试方案。工作这么多年,单元测试也没少写,像 Java、C++、Golang 都有过恶补单元测试的经历,为的就是应付各种 KPI,但是也不能说单元测试没有用,只是原始动力不是为了单元测试而单元测试,而是为了应付检查而单元测试。今天呢,就来说一说 Golang 语言的单元测试(这次真的是我自己主动要加的^_^)。

前言

说到代码的健壮性,单元测试是少不了的,基本上所有语言都有自己的单元测试方案。工作这么多年,单元测试也没少写,像 Java、C++、Golang 都有过恶补单元测试的经历,为的就是应付各种 KPI,但是也不能说单元测试没有用,只是原始动力不是为了单元测试而单元测试,而是为了应付检查而单元测试。今天呢,就来说一说 Golang 语言的单元测试(这次真的是我自己主动要加的^_^)。

正文

Golang 单元测试的工具包有很多,在 VSCode 插件超市里可以找到很多。今天我们主要介绍 Golang 内置的单元测试工具包—— testing。说实在的,用熟了之后,发现还是挺好用的。

单元测试规范

一、导入testing工具包

testing 是 Golang 内置的单元测试工具包,导入的时候非常方便,不需要引用 github 仓库地址的包。

实例代码:

packageutilsimport"testing"

二、单元测试文件命名规范

一般我们编写单元测试时,都会和原文件组合出现,以_test.go结尾。比如,原文件是xxx.go,那么它对应的单元测试文件就是 xxx_test.go。这是一种约定,所以我们在定义文件名时,不要轻易使用_test.go后缀。

结构示例图如下:

网络异常,图片无法展示
|

三、单元测试方法命名规范

单元测试一般都是针对单个方法进行单元测试的,所以,一般单元测试方法的命名也有一定的规则。如果我们测试的方法的名字是 aaa(),那么,单元测试方法的名字就是 Testaaa(t *Testing.T)。当然,单元测试方法可以自己手动写,也可以右键 VSCode 自动生成。

比如,我想测试一个压缩方法,单元测试方法实例代码:

funcTestZipFiles(t*testing.T) {
typeargsstruct {
filenamestringfiles    []stringoldFormstringnewFormstring    }
good :=args{
filename: "../example/resources/test.zip",
files:    []string{"../example/resources/test.txt"},
oldForm:  "",
newForm:  "",
    }
bad :=args{
filename: "../example/resources/test.zip",
files:    []string{"../example/resources/test.pdf"},
oldForm:  "",
newForm:  "",
    }
tests := []struct {
namestringargsargswantErrbool    }{
        {
name:    "good",
args:    good,
wantErr: false,
        },
        {
name:    "bad",
args:    bad,
wantErr: true,
        },
    }
t.Errorf("------------>begin")
for_, tt :=rangetests {
t.Run(tt.name, func(t*testing.T) {
iferr :=ZipFiles(tt.args.filename, tt.args.files, tt.args.oldForm, tt.args.newForm); (err!=nil) !=tt.wantErr {
t.Errorf("ZipFiles() error = %v, wantErr %v", err, tt.wantErr)
            }
        })
    }
t.Errorf("end<--------------")
}

在单元测试方法中,我们可以列出多个 case ,上面的例子中就包括一个可执行测试用例和一个不可执行测试用例。

四、执行单元测试

单元测试方法写完之后,怎么运行呢?也非常简单。

命令:

go test -v

结果实例:

网络异常,图片无法展示
|

结尾

好了,今天关于在 VSCode 中进行 Golang 单元测试的方法就介绍完了,感兴趣的小伙伴自己搞起来!晚安啦!我是 liuzhen007,欢迎关注,分享更多 Golang 知识。



作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!😄

目录
相关文章
|
17天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
174 4
|
15天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
17 1
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
261 3
|
2月前
|
JavaScript 测试技术 Windows
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
本文介绍了如何使用vue-cli和webpack为Vue项目配置不同的生产和测试环境,包括修改`package.json`脚本、使用`cross-env`处理环境变量、创建不同环境的`.env`文件,并在`webpack.prod.conf.js`中使用`DefinePlugin`来应用这些环境变量。
96 2
vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
69 4
|
1月前
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
62 1
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
2月前
|
Linux
kickstart自动安装系统 --DHCP 配置及测试
PXE+Kickstart自动安装系统需配置DHCP服务器分配IP。dhcpd.conf示例:设置更新样式、忽略客户端更新、指定下一服务器及启动文件。定义子网、网关、掩码、动态地址池并预留特定MAC地址。重启xinetd、NFS、DHCP服务,确保新服务器与Kickstart服务器在同一网络,避免误装其他机器。注意隔离测试网络以防干扰生产环境。
80 18
|
1月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
120 0
|
2月前
|
JavaScript 测试技术
vue配置生产环境.env.production、测试环境.env.development
该文章介绍了如何在Vue项目中配置和使用不同的环境变量文件(.env、.env.production、.env.development)以适应开发、测试和生产环境,并通过修改`package.json`中的scripts来实现不同环境的打包。
438 0
vue配置生产环境.env.production、测试环境.env.development