Go单元测试(一):基本用法

一、单元测试的基本规则介绍

Go的单元测试比较容易实现,因为Go语言为我们提供了单元测试的框架。而对于单元测试的框架需要遵循下面的几条规定。

规则1.单元测试代码的go文件必须以_test.go结尾,Go语言测试工具只会认符合这个规则的文件

规则2.单元测试的函数名必须以Test开头,是可导出公开的函数。备注:函数名最好是Test+要测试的方法函数名

规则3. 测试函数的签名必须接收一个指向testing.T类型的指针作为参数,并且该测试函数不能返回任何值

规则1: 

例子:单元测试文件不是以_test.go结尾命名的情况。

$ go test    // 备注,ut目录下只有main.go和maintest.go的时候,会显示下面的提示

?  _/Users/XXXX/ut [no test files] // 执行结果,显示没有测试文件被发现。

规则2:

例子:测试函数不是以Test开头

go test 会提示 告警:testing: warning: no tests to run

二、如何运行一个单元测试

单元测试代码如下所示:

640?wx_fmt=png

main.go    + main_test.go

$ go test -v -cover  

640?wx_fmt=png

介绍:

// -v, 显示单元测试的详细信息, 

// -cover会显示测试代码的覆盖率

 // go test显示的UT测试结果,以及花费的时间

三、表格驱动测试方法:

如果一个函数的逻辑分支很多,将会导致测试这个函数的测试用例非常多,然而这些测试用例绝大部分函数都是类似的。对于这种情况,表格驱动法(Table Driven)便可以发挥作用了。

下面用一个例子来介绍如何使用表格驱动法:

640?wx_fmt=png

$ go test table_test.go table.go -v

640?wx_fmt=png

画乛

表格驱动测试一般会用到三个步骤:

1.定义测试结果验证对应的数据结构。

2.构造测试函数对应的几种测试场景。

3.循环调用被测函数,并进行校验。

备注:

以上介绍的只是单元测试的最基本测试知识,实际工程中的单元测试要比这复杂很多,很多。尤其是一个模块中的函数依赖与其他模块或者第三方库等的接口内容,这种情况下,我们在做单元测试的时候,就需要stub和mock这些需要依赖的函数。(这部分知识会在后续章节进行介绍。)


欢迎关注,一个记录C++程序员学习Go语言的公众号,灰子学技术:

640?wx_fmt=jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值