当我运行"go test“时,我想使用一个不同的配置文件。如何在我的代码中知道我是在测试上下文中运行还是在正常上下文中运行?是否有某种环境变量需要检查?
发布于 2016-04-16 23:33:10
测试包在加载时修改全局环境:它注册了许多命令行标志。因此,我们可以检查这些标志是否已注册:
func init() {
    if flag.Lookup("test.v") == nil {
        fmt.Println("normal run")
    } else {
        fmt.Println("run under go test")
    }
}发布于 2017-08-28 14:43:13
由于flag.Lookup("test.v")方法对我不起作用,我想分享我自己的解决方案:
strings.HasSuffix(os.Args[0], ".test")或
strings.Contains(os.Args[0], "/_test/")这两种方法似乎都很有效。
发布于 2013-01-10 10:33:11
代码示例会有所帮助。但是,从您的问题听起来,您似乎已经在某个地方硬编码了一个指向配置文件的路径,而您可能希望将其传递给配置文件。
更改正在测试的函数,以获取定义配置文件的参数,然后在测试代码中传递与在非测试代码中使用的路径不同的路径。在测试和生产时,您的代码使用不同的路径是不好的做法。
https://stackoverflow.com/questions/14249217
复制相似问题