go test 单元测试

go test 注释后必须多空出一行,也就是 // 下一行要预留为空行,否则go解析的时候会把下一行解析成注释

 

1. 条件build 举例

 a.go

// +build !test
    ...todo code

 b.go

//+build test
    ...todo code

上面两个go文件,在执行 go build -tags "test" 的时候,实际上是只执行 b.go 

+build 是值得条件变异,test指的是 -tags 后的内容 符号 ! 是 “非” 的意思

 

2. go test 最大操作方位:包 包

//在packageName目录下,包与包用空格间隔
go test -tags "test" funnel/tasks net/http

 上述代码中,funnel/task 和 net/http 分别是两个包

 

3. go test 最小操作范围: func

go test -run=TestFunctionName
//测试当前包下面的TestFunctionName函数

 上述内容中,TestFunctionName 是函数名,函数测试必须遵循下面几点

  • 测试文件需要与被测试文件保持同级目录(这也是go test中所有测试用例的规范):demo.go  demo_test.go
  • 文件命名规则:被测试文件的文件名_test.go
  • 测试函数明明:Test+测试场景的函数名(t *testing.T)
  • 一个test.go文件内,可以包含多个测试场景
  • 一个包中的抽象出的公共测试函数,以包名_test.go命名文件

4. go test 常用命令列表

  • -v 无论用力是否测试通过,都会显示结果,不加 "-v" 表示只显示未通过的用例
  • -run 测试某个函数比如 go test -run = TestFunctionName
  • -cover 输出测试代码覆盖率
  • -c 变异pkg.test 但不执行
  • -i 安装测试依赖的package包,但不运行
  • -o 制定用于测试的课执行文件的名称
  • t.Log, t.Logf 打印正常信息
  • t.Error,t.Errorf 打印错误信息
posted @ 2019-09-18 22:09  阿波罗一号  阅读(1451)  评论(0编辑  收藏  举报