Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go工具链go test

Go工具链之代码测试神器go test详解

作者:路多辛

这篇文章主要给大家介绍Go 工具链go test,go test 是 Go 工具链中的一个命令,用于编译和运行按照要求编写的 Golang 测试代码,并生成测试报告,感兴趣的同学跟着小编一起来看看本文吧

go test 作用

go test 是 Go 工具链中的一个命令,用于编译和运行按照要求编写的 Golang 测试代码,并生成测试报告。

要求将测试代码所在的文件命名为 *_test.go,如此命名的文件不会被 go build 命令编译,但是会被 go test 进行编译和运行。在 *_test.go 中有几种类型的函数:

go test 使用方法和使用示例

go test 的使用方法比较简单,在项目的根目录或者某个包下直接运行如下命令:

go test 

go test 将会编译和运行当前项目或者当前包下所有的测试代码,并输出测试结果。

可以通过指定包或测试文件的路径来运行特定的测试,可以指定多个,也可以使用通配符进行匹配。例如:

go test [packages]
go test xxx.go

以下是一些常用的参数说明:

这里要着重讲解一下 -coverprofile 参数,这个参数可以将测试用例的代码覆盖结果输出到指定文件中,然后可以借助 go tool cover 来做具体的分析。来看一下带上 -coverprofile 参数的效果,以 github.com/luduoxin/json-validator-go 项目为例,clone 代码后,切换到项目的 validator 目录,打开终端,执行如下命令:

 $ go test -coverprofile=c.out

截取 c.out 的前两行内容如下:

mode: set
github.com/luduoxin/json-validator-go/validator/scanner.go:11.30,15.2 3

第二行每个部分代表的意思如下:

"文件:起始行.起始列,结束行.结束列 该基本块中的语句数量 该基本块被执行到的次数"

搞清楚这个输出内容的格式可以做很多事情,例如自己做工具来统计长时间运行的项目的测试覆盖率,就可以在执行测试用例的过程中,先生成此种格式的文件,然后借助 go tool cover 这个工具来分析。

到此这篇关于Go工具链之代码测试神器go test详解的文章就介绍到这了,更多相关Go工具链go test内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文