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 |
是否在性能测试的情况下输出内存 |
单元测试
func add(x,y int) int { return x + y}
func Test_add(t *testing.T) { // 参数 type args struct { x int y int } // 测试用例 tests := []struct { name string // 用例名称 args args // 参数 want int // 预期的结果 }{ {"test1", args{x: 1, y: 2}, 3}, {"test1", args{x: 100, y: 200}, 300}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := add(tt.args.x, tt.args.y); got != tt.want { t.Errorf("add() = %v, want %v", got, tt.want) } }) }}
在GolandIDE中可以通过Command+N功能一键生成实现方法``测试函数等
压力测试 (benchmark)