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)
}
})
}
}
在Goland
IDE中可以通过Command+N
功能一键生成实现方法``测试函数
等
压力测试 (benchmark)