golang TestMain()函数设置测试无法访问的变量

时间:2017-02-22 15:38:06

标签: testing go

我有以下TestMain功能:

func TestMain(m *testing.M) {
  db := "[working_db_connection]"
  dbInstance, _ := InitializeRepo(db, 2)
  runTests := m.Run()
  os.Exit(runTests)
}

以及以下样本测试

func TestSomeFeature(t *testing.T) {
  fmt.Println(dbInstance)
}

TestSomeFeature函数确实运行,但是说dbInstance是未定义的。为什么这不能访问变量?从示例中我可以看到TestMain中的变量et用这种语法访问。

2 个答案:

答案 0 :(得分:7)

dbInstanceTestMain的局部变量,它在TestSomeFeature函数的生命周期中不存在。因此,测试套件告诉您dbInstance未定义 将变量定义为TestMain外部的全局变量,然后在TestMain

中实例化变量
var DbInstance MyVariableRepoType

func TestMain(m *testing.M) {
  db := "[working_db_connection]"
  DbInstance, _ = InitializeRepo(db, 2)
  runTests := m.Run()
  os.Exit(runTests)
}

答案 1 :(得分:3)

你应该在任何函数之外定义你的变量。

var dbInstance DbType