【发布时间】:2014-02-16 12:38:34
【问题描述】:
有没有办法在 go "tests" 中获取命令行参数,
当您调用go test 时,显然您的main 没有运行,所以有没有办法处理命令行参数,
一种方法是使用 flags 包并检查每个测试或正在测试的函数中的命令行参数,但这并不理想,因为您需要在很多地方执行此操作,不像当您运行应用程序时,您只需在main 中即可。
有人可能会认为这样做是错误的,并且违反了单元测试的纯度:
- 并非所有测试都是单元测试
- 不依赖“ENV”变量并在命令行中实际将这些东西作为参数传递是非常实用的,
为了记录,我最终将init() 函数放在我的一个_test 文件中,并设置在以这种方式调用main 时通过标志设置的变量。
【问题讨论】:
-
我不确定你在问什么。测试不应依赖于命令行参数。
-
行为测试可以,单元测试不应该,比如是否需要知道它是在开发环境还是生产环境中?
-
如果你绝对需要你可以使用
-args标志go test。go test -v -args --test-args foo -
@Cubic 除非您想测试是否正确处理了命令行参数...
标签: testing go command-line-arguments go-flag