我怎么知道我在“去测试”中跑步

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


ABOUTYOU
浏览 381回答 3
3回答

慕桂英4014372

测试包在加载时会修改全局环境:它注册了许多命令行标志。因此,我们可以检查这些标志是否已注册:func init() {    if flag.Lookup("test.v") == nil {        fmt.Println("normal run")    } else {        fmt.Println("run under go test")    }}

当年话下

由于该flag.Lookup("test.v")方法对我不起作用,因此我想分享自己的解决方案:strings.HasSuffix(os.Args[0], ".test")或者strings.Contains(os.Args[0], "/_test/")两者似乎都起作用。

白衣非少年

代码示例将有所帮助。但是从您的问题看来,当您可能想将其传递时,听起来好像您已在某处对配置文件的路径进行了硬编码。更改要测试的功能以使用定义配置文件的参数,然后在测试代码中传递与在非测试代码中使用的路径不同的路径。在测试和生产时,代码具有不同的路径是不好的做法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go