golang测试

作者: 太古汤 | 来源:发表于2019-06-30 21:53 被阅读0次

    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测试

        本文链接:https://www.haomeiwen.com/subject/lsticctx.html