登录
首页 >  Golang >  Go问答

如何编写干净的集成测试

来源:stackoverflow

时间:2024-04-04 19:21:35 430浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《如何编写干净的集成测试》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我想使用 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,您可以为您的函数生成干净且良好的测试。

本篇关于《如何编写干净的集成测试》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>