golang测试

太古汤 · · 829 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

go语言提供了对测试的支持。在go的标准库文档中的testing包页面,对go语言的测试方法有较为详细的使用说明,这里仅仅对go语言的测试进行简单说明。

1.使用概述

使用go语言的测试功能,需要在以_test.go结尾的文件中编写测试函数。文件中需要引入testing包。最后,使用go test命令执行测试。

测试函数形式如下:

func TestXxx(*testing.T) {
  //具体执行步骤
}

其中Xxx是任意字母和数字。

Xxx第一个字母不能是小写字母。可以理解是如果是小写字母,不能识别开头的Test。
函数形参testing.T是执行单元测试的参数,基准测试的参数是testing.B
这里主要以单元测试为例

2.go test的使用

go test 命令的具体用法可以使用go help test命令详细了解。
使用的形式为

go test [build/test flags] [packages] [build/test flags & test binary flags]

如果[packages]为空,会默认执行当前目录所在包的_test.go 文件

指定[packages]的形式如'go test math', 'go test ./...'

也可以指定具体的_test.go文件。格式如

go test ./go_test.go

指定具体文件的时候,似乎只会返回结果(测试是否pass等等),不会有其他输出(包括标准输出)。加上-v后正常。

3.go test 常用flag

具体的flag可以运行go help testflag查看
挑选几个常用的大概了解下

-cover    //开启覆盖率分析
-run      //后面接正则表达式,只运行与该正则表达式匹配的测试函数。可以用来指定具体某个函数运行
-list   //后面接正则表达式,列出匹配的函数。单元测试的函数不会执行
-v   //详细输出,testing.T的log等函数,在测试通过的时候不展示日志,加上-v,无论成功与否,都会显示
-timeout //超时时间。默认10分钟(10m),如果为0,没有超时

4.testing包

4.1 testing.T

用于单元测试
这里仅列一下常用方法,详细说明看标准库文档

func (c *T) Log(args ...interface{})
func (c *T) Logf(format string, args ...interface{})
//日志
//如果允许结果成功,不展示。
//可以使用-v 使go test 的日志在成功的时候也输出
func (c *T) Fail()    //将当前测试标识为失败,但是仍继续执行该测试。

func (c *T) FailNow()    //将当前测试标识为失败,该测试函数不再往下执行(其他Test函数还执行)

没有断言,可以使用上面两个方法替代。

func (c *T) Error(args ...interface{})
func (c *T) Errorf(format string, args ...interface{})

//相当于执行Log后执行Fail
func (c *T) Fatal(args ...interface{})
func (c *T) Fatalf(format string, args ...interface{})

//相当于执行Log后执行FailNow

参考资料
testing pkg doc


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:太古汤

查看原文:golang测试

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

829 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传