我正在尝试从单元测试文件中设置变量
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中设置它。
关于这个问题的正确方法是什么?
答案 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
}
//...
}