有没有办法在go"test"中获取命令行参数,
当您呼叫go test时,显然您的main没有运行,那么有没有一种方法来处理命令行参数,

一种方法是使用flags个包,并在每个测试或正在测试的函数中判断命令行参数,但这并不理想,因为您需要在很多地方这样做,而不是在运行应用程序时在main中这样做.

有人可能会认为这是一件错误的事情,而且这与单元测试的纯洁性背道而驰:

  1. 并非所有测试都是单元测试
  2. 不依赖"env"变量,而实际上在命令行中以参数的形式传递东西是非常有用的,

为了记录起见,我最终在我的_test个文件中的一个文件中放置了一个init()函数,并设置了以这种方式调用main时通过标志设置的变量.

推荐答案

根据我的经验,环境配置最好保存在环境变量中.您可以依赖全局变量,如下所示:

var envSetting = os.Getenv("TEST_ENV")

或者,如果需要使用标志,可以将初始化代码放在名为init()的函数中.

func init() {
    flags.Parse()
    myEnv = *envFlag
    // ...
}

Go相关问答推荐

获取k8s群集作用域运算符的命名空间

具有GRPC的RBAC(基于角色的访问控制)-网关生成的REST风格的API

如何修复Go中调用GetRawInputDeviceInfA Windows API函数时的错误?

如何使用GO GIN从Auth0 JWT内标识检索权限

在GO中使用泛型类型 struct 实现接口方法

优化方式中所有可能组合的字符串相似度

仅使用公共 api 对 alexedwards/scs 进行简单测试

Golang chromedp Dockerfile

以编程方式取消 pyspark dataproc 批处理作业(job)

通过多阶段构建复制到 Docker 容器中时找不到文件

是否可以在调试期间在 VSCode 中预览 github.com/shopspring/decimal 值?

Yocto 无法交叉编译 GoLang Wails 应用程序

泛型:实现嵌套接口

如何在 Go 中编写示例测试?

使用 Grafana alert 在几分钟内重复alert

使用 Golang 在字符串中循环重复数据

如何在gin中获取参数值数组

在 connect-go 拦截器中修改响应体

如何从字符串中删除多个换行符`\n`但只保留一个?

简单的 golang IRC bot 不断超时