为了账号安全,请及时绑定邮箱和手机立即绑定

如何编写干净的集成测试

如何编写干净的集成测试

Go
呼唤远方 2023-07-26 13:15:40
我想使用 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,您可以为您的函数生成干净且良好的测试。



查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信