go test 工具

一个按照约定和组织的测试代码的驱动程序,所有的以_test结尾的go文件均是测试的一部分,不会被go build编译到最终可执行文件中

支持的测试类型

类型 格式 作用
测试函数 Test* 逻辑性测试
基准函数 Benchmark* 性能测试
示例函数 Example* 为函数提供示例文档
模糊测试

常用参数

go test …

参数 作用
-c 编译为可执行文件,但是不运行测试
-i 安装测试包依赖,但是不运行测试

go testflag …

参数 作用 备注
-test.v 是否输出全部用例 只输出失败的用例
-test.run pattern 只跑哪些单元测试用例 示例: -test.run User
-test.bench pattern 只跑哪些压力测试用例
-test.benchmen 是否在性能测试的情况下输出内存

单元测试

  1. func add(x,y int) int {
  2. return x + y
  3. }
  1. func Test_add(t *testing.T) {
  2. // 参数
  3. type args struct {
  4. x int
  5. y int
  6. }
  7. // 测试用例
  8. tests := []struct {
  9. name string // 用例名称
  10. args args // 参数
  11. want int // 预期的结果
  12. }{
  13. {"test1", args{x: 1, y: 2}, 3},
  14. {"test1", args{x: 100, y: 200}, 300},
  15. }
  16. for _, tt := range tests {
  17. t.Run(tt.name, func(t *testing.T) {
  18. if got := add(tt.args.x, tt.args.y); got != tt.want {
  19. t.Errorf("add() = %v, want %v", got, tt.want)
  20. }
  21. })
  22. }
  23. }

GolandIDE中可以通过Command+N功能一键生成实现方法``测试函数

压力测试 (benchmark)