当我运行“go test”时,我想使用不同的配置文件。我如何知道我的代码是在测试上下文还是正常上下文中运行?是否需要检查某种环境变量?
3 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
测试包在加载时会修改全局环境:它注册了许多命令行标志。因此,我们可以检查这些标志是否已注册:
func init() {
if flag.Lookup("test.v") == nil {
fmt.Println("normal run")
} else {
fmt.Println("run under go test")
}
}
当年话下
TA贡献1890条经验 获得超9个赞
由于该flag.Lookup("test.v")
方法对我不起作用,因此我想分享自己的解决方案:
strings.HasSuffix(os.Args[0], ".test")
或者
strings.Contains(os.Args[0], "/_test/")
两者似乎都起作用。
白衣非少年
TA贡献1155条经验 获得超0个赞
代码示例将有所帮助。但是从您的问题看来,当您可能想将其传递时,听起来好像您已在某处对配置文件的路径进行了硬编码。
更改要测试的功能以使用定义配置文件的参数,然后在测试代码中传递与在非测试代码中使用的路径不同的路径。在测试和生产时,代码具有不同的路径是不好的做法。
- 3 回答
- 0 关注
- 380 浏览
添加回答
举报
0/150
提交
取消