gpt4 book ai didi

go - 如何编写干净的集成测试

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:17 26 4
gpt4 key购买 nike

我想使用 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 个测试函数,每个测试函数也有很多测试用例。我怎样才能干净地编写我的集成测试?

最佳答案

如果您考虑可维护性和整洁的代码,恕我直言,我建议您在不同的测试中测试每个 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您可以为您的功能生成干净漂亮的测试。

关于go - 如何编写干净的集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57950202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com