首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何知道我是在"go test“中运行?

我如何知道我是在"go test“中运行?
EN

Stack Overflow用户
提问于 2013-01-10 09:05:17
回答 10查看 18.2K关注 0票数 41

当我运行"go test“时,我想使用一个不同的配置文件。如何在我的代码中知道我是在测试上下文中运行还是在正常上下文中运行?是否有某种环境变量需要检查?

EN

回答 10

Stack Overflow用户

发布于 2016-04-16 23:33:10

测试包在加载时修改全局环境:它注册了许多命令行标志。因此,我们可以检查这些标志是否已注册:

代码语言:javascript
运行
复制
func init() {
    if flag.Lookup("test.v") == nil {
        fmt.Println("normal run")
    } else {
        fmt.Println("run under go test")
    }
}
票数 46
EN

Stack Overflow用户

发布于 2017-08-28 14:43:13

由于flag.Lookup("test.v")方法对我不起作用,我想分享我自己的解决方案:

代码语言:javascript
运行
复制
strings.HasSuffix(os.Args[0], ".test")

代码语言:javascript
运行
复制
strings.Contains(os.Args[0], "/_test/")

这两种方法似乎都很有效。

票数 24
EN

Stack Overflow用户

发布于 2013-01-10 10:33:11

代码示例会有所帮助。但是,从您的问题听起来,您似乎已经在某个地方硬编码了一个指向配置文件的路径,而您可能希望将其传递给配置文件。

更改正在测试的函数,以获取定义配置文件的参数,然后在测试代码中传递与在非测试代码中使用的路径不同的路径。在测试和生产时,您的代码使用不同的路径是不好的做法。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14249217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档