Golang程序测试

软件开发离不开软件测试,测试是程序质量的有力保障,也是程序开发者的有力辅助工具。当我们添加或者更新了新的功能是,通过测试单元我们能清楚的了解到程序功能是否正常、性能是否提高等。

Go语言作为一门先进的现代计算机编程语言,为程序测试提供了很多开箱即用的工具。Go语言在标准准库中提供了一个专门用于测试的代码包testing。这个代码包提供了编写代码测试源码文件的一切。使用go test命令便可执行测试源码文件的测试程序。

一功能测试

测试员吗文件总应该与被它测试的源码文件厨艺同一个代码包内。我们在编写测试源码文件总是会用到标准库代码包testing的API。testing包维Go语言的代码包提供自动化测试支持。它与go test命令协同使用自动执行目标代码包中的任何测试函数。

1.1编写测试函数

在测试源码文件中,针对测试目标源码文件的功能测试总是以函数为单位。被用于测试的函数的名称和签名形如:
func TestXxx(t *testing.T)
通常把Xxx替换成被测试的函数名称。我们可以利用*testing.T类型的参数t上的一些方法对功能测试的过程进行记录和控制。

  • 常规记录
    参数 t 上的Log和Logf方法一般用于记录一些常规信息,以展示测试程序的运行过程以及被测试程序的实时状态。t.Log和t.Logf分别与fmt.Println和fmt.Printf函数的使用方法类似。
  • 错误记录
    参数t上的Error和ErrorF方法被用于错误记录。当被测试程序的状态不正确时,调用t.Error或者t.Errorf方法,及时记录当前的错误状态。调用t.Error相当于先后调用了t.Log和t.Fial方法,而调用t.Errorf则相当于先后调用了t.LogF和t.Fial方法。
  • 致命错误记录
    参数t上的Fatal和Fatalf方法被用于记录被测试程序的致命错误状态( 使得测序程序无法继续运行的错误 )。调用t.Fatal相当于先后调用了t.Log和t.FialNow方法,而调用t.Errorf则相当于先后调用了t.FatalF和t.FialNow方法。
  • 失败标记
    参数上的Fail方法被用于标记当前测试函数中的测试是失败的。对t.Fail方法的调用不会终止当前测试函数的执行。当时,此函数的测试结果已经被标记为失败了。
  • 立即失败标记
    方法t.FailNow用于标记当前测试函数的测试是失败的,并立即终止当前测试函数的执行。
  • 失败判断
    t.Failed方法用于获得当前测试函数中的测试是否已经被标记为失败。
  • 忽略测试
    调用t.SkipNow的方法用于标记当前测试函数为已经被忽略的并且立即终止该函数的执行。
1.2功能测试的额运行

Go语言提供了专门用于程序测试命令--go test命令。

执行go test的三种方式:

  • go test testPackage 命令后面跟被测试代码包。
  • go test xxx_test.go xx.go 命令后面跟测试源码文件及其测试的源码文件,用于执行代码包中的部分测试。
  • go test -run=Regxp testPackage使用标记-run ,-run标记的值为一个正则表达式,与正则表达式匹配的功能测函数,才会在此次的测试过程中被执行。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,690评论 0 9
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,799评论 25 707
  • L小姐最近又找了一份兼职,是在一所老年大学兼职教一群老头老太太乐理,大概和她一直以来的富婆梦有关吧,L小姐一直想做...
    相濡以火锅阅读 379评论 1 2