千家信息网

Go语言的单元测试方法是什么

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容主要讲解"Go语言的单元测试方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Go语言的单元测试方法是什么"吧!Go语言似乎是个偏执狂,牺牲
千家信息网最后更新 2025年01月24日Go语言的单元测试方法是什么

本篇内容主要讲解"Go语言的单元测试方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Go语言的单元测试方法是什么"吧!

Go语言似乎是个偏执狂,牺牲了不必要的灵活性,带来一些强制的编程风格和约定。比如:

无任何形式的Makefile,模块就是目录、包就是目录、编译配制就是目录!

不光目录被用上了,文件名还能指定用途。文件名后缀为_test.go的都是单元测试文件,_linux32.go就是32位linux特定的代码。

不光文件名被用上了,函数名还有特定用途。在单元测试文件中,测试函数以Test开头。以大写字母开头的变量、类型和函数是外部可见的,小写字母开头的变量、类型和函数是外部不可见的。

类似的约定也不好说是go语言首创,在一些文件格式中也有类似规范。但是我暂时不知道到有什么其它编程语言对编程风格这么带强制性。

对于单元测试,假设有如下calc.go文件:

package calcfunc Add(a,b int) int {    return a+b }func Max(a,b int) (ret int) {    ret = a     if b > a {         ret = b     }       return}func Min(a,b int) (ret int) {    ret = a     if b < a {         ret = b     }       return}

有如下测试代码calc_test.go:

package calcimport (    "testing")type calcTest struct {    a,b,ret int}var addTests = []calcTest{    calcTest{4,6,10},    calcTest{5,6,11},    calcTest{8,-10,-2},}func TestAdd(t *testing.T) {    for _,v := range addTests {        ret := Add(v.a,v.b)        if ret != v.ret {            t.Errorf("%d add %d,want %d,but get %d",v.a,v.b,v.ret,ret)        }    }}func TestMax(t *testing.T){    a,b := 100,300    ret := Max(a,b)    if ret != b {        t.Errorf("%d is bigger than %d",b,a)    }}func TestMin(t *testing.T) {    a,b := 100,300    ret := Min(a,b)    if ret != a {        t.Errorf("%d is smaller than %d",a,b)    }}

执行go test 得到如下结果:

PASSok      _/home/liangdi/Desktop/test/go/testing    0.008在calc.go中设计一个逻辑错误,把 func Min(a,b int) ret int 改为:func Min(a,b int) (ret int) {    ret = a     //逻辑错误    if b > a {         ret = b     }       return}

执行go test的结果为:

--- FAIL: TestMin (0.00 seconds)    calc_test.go:38: 100 is smaller than 300FAILexit status 1FAIL    _/home/liangdi/Desktop/test/go/testing    0.005s

到此,相信大家对"Go语言的单元测试方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

测试 文件 单元 语言 方法 函数 就是 目录 开头 文件名 编程 代码 内容 变量 字母 用途 类型 结果 逻辑 错误 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网警 应对 网络安全态势 网络安全在国家层面 数据库语言基本概念 手机app修改定位软件开发 南理工网络安全学费一年多少 数据和网络安全自查表医保没有 数据库主数据文件扩展名 服务器ip怎么查 金蝶财务软件开发语言 魔兽世界怀旧服燃烧的远征奥金斧服务器 大专专业网络技术工作难找吗 软件开发过程中的周期模型 天龙八部双线区服务器怎么样 win10关闭网络安全 15项黑科技互联网大会 曙光服务器怎么进管理端口 ssms数据库安装包 代理服务器的安全证书问题 正规网络技术服务哪里好 深圳市爱卡蒙网络技术有限公司 互联网科技基金还能继续持有吗 服务器链接异常是什么情况 如何安装虚拟机数据库 怎么让手机流量不走运营商服务器 信息网络技术及应用 网络安全知识教育内容摘要 末日危机服务器检测中 郑州互联网软件开发要多少钱 软件开发的研究方向 创建数据库用了什么技术
0