如何使用testing包正确配置Go中的测试环境(setup)?
大家好!我开始学习Go,并尝试为我的项目编写单元测试。我有一个函数,它使用数据库并执行多个查询。为了测试,我需要在每个测试前准备数据:创建表、插入测试记录,并在测试后清理所有内容。
我知道TestMain和t.Run函数,但不知道如何正确使用它们进行setup/teardown。在其他语言(Java、Python)中,我习惯了@Before/@After注解或pytest的fixtures。但在Go中没有这样的东西,我觉得我在每个测试中复制相同的代码。
以下是我当前方法的示例(我不喜欢它):
```go
func TestGetUser(t *testing.T) {
db := setupDB() // 创建数据库、表、插入数据
defer teardownDB(db) // 删除表
user, err := GetUser(db, 1)
if err != nil {
t.Fatal(err)
}
if user.Name != "Alice" {
t.Errorf("expected Alice, got %s", user.Name)
}
}
func TestCreate