我正在设置一些集成测试,这是我在src代码的单独测试包中完成的。这样做是为了防止循环依赖关系。单元测试不存储在此处,它们与正在测试的文件一起存储。
我的 golang 项目层次结构如下所示:
cmd public ...testing/ main_test.go database_test.go
在main_test.go中,我计划初始化与外部依赖项(例如我的测试数据库)的连接。
package tests
type Database struct {
...
}
var DB Database
func TestMain(m *testing.M){
SetUpDatabase()
exitCode := m.Run()
os.Exit(exitCode)
}
database_integration_test.go
func Test(t *testing.T) {
tests := []struct {
title string
run func(t *testing.T)
}{
{"should make query", testQuery},
}
for _, test := range tests {
t.Run(test.title, func(t *testing.T) {
test.run(t)
})
}
}
func testQuery(t *testing.T) {
var r result.Result
err := DB.database.DoQuery("").Decode(&r)
if err != nil {
t.Errorf(err.Error())
t.Fatal()
}
}
此设置在我运行时有效,但是,我想向这些文件或类型添加构建标记:但是,一旦我使用构建标记,database_integration_test.go文件就无法看到初始化的数据库类型。我该如何阻止这种情况?另外作为旁注,我应该更改main_test.go的名称。我只是这么称呼它,因为main是站立的入口点。// +build integration
千万里不及你
翻过高山走不出你
相关分类