Avatar ·

如何使用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