热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从零到一学习go语言之单元测试篇

通常单元测试,能够帮我在代码发不到线上环境前,提前发现问题。本文着重讲解go语言的单元测试模块testing的使用、gotest命令行、以及案例一、代

通常单元测试,能够帮我在代码发不到线上环境前,提前发现问题。本文着重讲解go语言的单元测试模块testing的使用、go test命令行、以及案例


一、代码示例:本案例是对上一讲的greetings/greetings.go模块中的Hello方法的测试

package greetingsimport ("regexp""testing"
)func TestHello(t *testing.T) {//定义参数结构体type args struct {name string}//定义测试用例结构体tests := []struct {name stringargs argswant *regexp.RegexpwantErr bool}{//添加单侧用例{"第一个单元测试用例",args{name:"test_name"},regexp.MustCompile("test_name"),false,},{"第二个单元测试用例",args{name:""},regexp.MustCompile(""),false,},}//循环执行单测用例for _, tt := range tests {t.Run(tt.name, func(t *testing.T) {got, err := Hello(tt.args.name)if (err != nil) != tt.wantErr {t.Errorf("Hello() error = %v, wantErr %v", err, tt.wantErr)return}if !tt.want.MatchString(got) {t.Errorf("Hello() got = %v, want %v", got, tt.want)}})}
}

二、go语言testing的使用


  • go语言内置的testing包,对单侧的集成支持,可以协助我们方便的编写单元测试,并运行。
  • go语言的单元测试,是命名约定优先:单侧文件命名为“_test.go”后缀;单测文件中的单测方法以“Test”开头。在执行go test命令时,会自动扫描_test.go结尾go文件中的Test方法

三、go test 命令

cd到单侧文件所在层级目录,执行go test指令,可以自动扫描该目录下所有以_test.go文件结尾,以Test开头的单测方法,并将结果输出到控制台。

尝试修改第二个单测用例的wantErr改为fasle,实际是返回true,重新执行go test命令

如果要输出详细执行信息,可以添加-v参数:go test -v

 


推荐阅读
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • 设计模式——模板方法模式的应用和优缺点
    本文介绍了设计模式中的模板方法模式,包括其定义、应用、优点、缺点和使用场景。模板方法模式是一种基于继承的代码复用技术,通过将复杂流程的实现步骤封装在基本方法中,并在抽象父类中定义模板方法的执行次序,子类可以覆盖某些步骤,实现相同的算法框架的不同功能。该模式在软件开发中具有广泛的应用价值。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。 ... [详细]
author-avatar
安徒生笔下苍老了谁1_120
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有