setting a variable from test file in golang

huangapple go评论85阅读模式
英文:

setting a variable from test file in golang

问题

我正在尝试从我的单元测试文件main_test.go中设置一个变量。

main_test.go

var testingMode bool = true

main.go

if testingMode == true {
  //使用测试数据库
} else {
  //使用常规数据库
}

如果我运行"go test",这个方法可以正常工作。如果我运行"go build",Golang会报错说testingMode未定义(这是正确的,因为测试不是程序的一部分)。

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

正确的做法是什么?

英文:

i'm trying to set a variable from my unit tests file

main_test.go

var testingMode bool = true

main.go

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

If I run "go test", this works fine. If I do "go build", golang complains that testingMode is not defined (which should be the case since tests aren't part of the program).

But it seems if I set the global variable in main.go, I'm unable to set it in main_test.

What's the correct way to about this?

答案1

得分: 18

尝试这样做:

main.go 中将你的变量定义为全局变量:

var testingMode bool

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

func init() {
    testingMode = true
}
英文:

Try this:

Define your variable as global in main.go:

var testingMode bool

And then set it to be true in your test file main_test.go:

func init() {
    testingMode = true
}

答案2

得分: 1

Pierre Prinetti的答案在2019年不起作用。

相反,可以这样做。虽然不是最理想的方法,但可以完成任务。

//在你要测试的模块中(而不是测试模块):
func init() {
if len(os.Args) > 1 && os.Args[1][:5] == "-test" {
log.Println("testing")//特殊的测试设置在这里
return // ...或者完全跳过设置
}
//...
}

英文:

Pierre Prinetti's Answer doesn't work in 2019.

Instead, do this. It's less then ideal, but gets the job done

//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
    }
    //...
}

huangapple
  • 本文由 发表于 2015年5月21日 17:30:56
  • 转载请务必保留本文链接:https://go.coder-hub.com/30369818.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定