3 回答
TA贡献1816条经验 获得超6个赞
根据我的经验,环境配置最好保存在环境变量中。您可以像这样依赖全局变量:
var envSetting = os.Getenv("TEST_ENV")
或者,如果需要使用标志,您可以将初始化代码放在名为 init() 的函数中。
func init() {
flags.Parse()
myEnv = *envFlag
// ...
}
TA贡献1789条经验 获得超10个赞
另一种方法是使main()成为一个存根,它仅在由 处理参数后调用另一个函数flag.Parse(),例如:
var flagvar int
func init() {
flag.IntVar(&flagvar, "flagname", 1234, "help for flagname")
}
func main() {
flag.Parse()
submain(flag.Args)
}
func submain(args []string) {
...
}
然后在您的测试中,可以在调用submain(...)模拟标志和参数的命令行建立之前设置标志变量并建立参数。这种方法可用于在不实际使用命令行的情况下最大化测试覆盖率。例如,在 main_test.go 中,你可以这样写:
func TestSomething(t *testing.T) {
flagvar = 23
args := []string{"a", "b", "c"}
submain(args)
...
}
- 3 回答
- 0 关注
- 309 浏览
添加回答
举报