Golang单元测试命名规范(使用gotests工具)
Golang单元测试命名规范(使用gotests工具) 大家好,
你们是否在使用 https://github.com/cweill/gotests 来生成基于表格的单元测试骨架?如果是的话,你们为测试用例采用了什么样的命名规范?
我指的是自动生成的测试结构体切片中的 “name” 字段:
tests := []struct {
name string
fields fields
args args
wantExitStatus subcommands.ExitStatus
}
运行这些测试时,输出看起来像这样:
=== RUN TestAPICmd_Execute
=== RUN TestAPICmd_Execute/API_cmd_should_call_Server.Start()
--- PASS: TestAPICmd_Execute (0.52s)
--- PASS: TestAPICmd_Execute/API_cmd_should_call_Server.Start() (0.52s)
这是因为我将 name 字段设置为了:
name: "API cmd should call Server.Start()"
有什么建议吗?
更多关于Golang单元测试命名规范(使用gotests工具)的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于Golang单元测试命名规范(使用gotests工具)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在使用gotests工具生成表格驱动测试时,测试用例的命名规范通常遵循以下模式:
tests := []struct {
name string
fields fields
args args
want int
wantErr bool
}{
{
name: "正常情况-输入有效参数",
fields: fields{/* ... */},
args: args{/* ... */},
want: 100,
wantErr: false,
},
{
name: "边界情况-输入空值",
fields: fields{/* ... */},
args: args{/* ... */},
want: 0,
wantErr: true,
},
{
name: "异常情况-输入负数",
fields: fields{/* ... */},
args: args{/* ... */},
want: -1,
wantErr: true,
},
}
更具体的命名示例:
tests := []struct {
name string
input string
want string
wantErr bool
}{
{
name: "正常字符串转换",
input: "hello",
want: "HELLO",
wantErr: false,
},
{
name: "空字符串处理",
input: "",
want: "",
wantErr: false,
},
{
name: "包含数字的字符串",
input: "hello123",
want: "HELLO123",
wantErr: false,
},
}
对于测试函数本身的命名,gotests通常使用Test函数名的格式:
func TestCalculator_Add(t *testing.T) {
tests := []struct {
name string
a int
b int
want int
}{
{
name: "正数相加",
a: 2,
b: 3,
want: 5,
},
{
name: "负数相加",
a: -2,
b: -3,
want: -5,
},
{
name: "正负数相加",
a: 5,
b: -3,
want: 2,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
calc := &Calculator{}
if got := calc.Add(tt.a, tt.b); got != tt.want {
t.Errorf("Add() = %v, want %v", got, tt.want)
}
})
}
}
测试输出会显示完整的测试路径:
=== RUN TestCalculator_Add
=== RUN TestCalculator_Add/正数相加
=== RUN TestCalculator_Add/负数相加
=== RUN TestCalculator_Add/正负数相加
--- PASS: TestCalculator_Add (0.00s)
--- PASS: TestCalculator_Add/正数相加 (0.00s)
--- PASS: TestCalculator_Add/负数相加 (0.00s)
--- PASS: TestCalculator_Add/正负数相加 (0.00s)

