我想使用 Go 和 MySQL 编写集成测试。但我很困惑如何做到这一点。我有 4 个函数:创建、获取、更新和删除。如果我只有一个测试函数来测试我的所有代码,这是一种好的做法吗?例如:func TestCRUD(t *testing.T){ t.Run("success case", func(t *testing.T){ // call create func // call update func // call get func // call delete func })}如果我有像上面这样的代码,我只需一个测试函数来测试我的所有代码。如果我想添加一个测试用例,我只需添加到TestCRUD()函数中即可。这是一个好的做法吗?或者我应该为每个 CRUD 函数编写测试函数?所以我有4个测试函数,每个测试函数也有很多测试用例。如何干净地编写集成测试?
1 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
如果您考虑可维护性和简洁的代码,恕我直言,我建议您在不同的测试中测试每个 CRUD 功能。
关于您关于多个测试用例的问题,我想说一个好的方法是使用 DDT(数据驱动测试或表驱动测试)。就像是:
func Test_create(t *testing.T) {
type args struct {
// Define here your function arguments
arg1 string,
arg2 string,
}
tests := []struct {
name string
args args
want bool // Your possible function output
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := create(tt.args.id); got != tt.want {
t.Errorf("create() = %v, want %v", got, tt.want)
}
})
}
}
使用gotests,您可以为您的函数生成干净且良好的测试。
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报
0/150
提交
取消