在golang中设置测试文件中的变量

时间:2015-05-21 09:30:57

标签: go

我正在尝试从单元测试文件中设置变量

main_test.go

var testingMode bool = true

main.go

if testingMode == true {
  //use test database
} else {
  //use regular database
}

如果我运行“go test”,这样可以正常工作。如果我“go build”,golang会抱怨没有定义testingMode(因为测试不是程序的一部分,所以应该是这种情况)。

但是,如果我在main.go中设置全局变量,我似乎无法在main_test中设置它。

关于这个问题的正确方法是什么?

2 个答案:

答案 0 :(得分:8)

试试这个:

main.go

中将变量定义为全局变量
var testingMode bool

然后在测试文件true中将其设置为main_test.go

func init() {
    testingMode = true
}

答案 1 :(得分:1)

Pierre Prinetti的答案在2019年无效。

相反,请执行此操作。它远不如理想,但可以完成工作

//In the module that you are testing (not your test module:
func init() {
    if len(os.Args) > 1 && os.Args[1][:5] == "-test" {
        log.Println("testing")//special test setup goes goes here
        return // ...or just skip the setup entirely
    }
    //...
}