前言
go test有非常丰富的参数,一些参数用于控制测试的编译,另一些参数控制测试的执行。
有关测试覆盖率、vet和pprof相关的参数先略过,我们在讨论相关内容时再详细介绍。
控制编译的参数
-args
指示go test把-args后面的参数带到测试中去。具体的测试函数会跟据此参数来控制测试流程。
-args后面可以附带多个参数,所有参数都将以字符串形式传入,每个参数做为一个string,并存放到字符串切片中。
// TestArgs 用于演示如何解析-args参数
func TestArgs(t *testing.T) {
if !flag.Parsed() {
flag.Parse()
}
argList := flag.Args() // flag.Args() 返回 -args 后面的所有参数,以切片表示,每个元素代表一个参数
for _, arg := range argList {
if arg == "cloud" {
t.Log("Running in cloud.")
}else {
t.Log("Running in other mode.")
}
}
}
执行测试时带入参数:
E:\OpenSource\GitHub\RainbowMango\GoExpertProgrammingSourceCode\GoExpert\src\gotest>go test -run TestArgs -v -args "cloud"
TestMain setup.
=== RUN TestArgs
--- PASS: TestArgs (0.00s)
unit_test.go:28: Running in cloud.
PASS
TestMain tear-down.
ok gotest 0.353s
通过参数-args指定传递给测试的参数。
-json
-json 参数用于指示go test将结果输出转换成json格式,以方便自动化测试解析使用。
示例如下:
E:\OpenSource\GitHub\RainbowMango\GoExpertProgrammingSourceCode\GoExpert\src\gotest>go test -run TestAdd -json
{"Time":"2019-02-28T15:46:50.3756322+08:00","Action":&#