去测试标志:标志提供但未定义

新手上路,请多包涵

嗨,我在进行测试时使用了一个标志:

file_test.go var ip = flag.String("ip", "noip", "test")

我只在一个测试文件中使用它。当只测试那个测试文件时它工作正常,但是当我运行时: go test ./... -ip 127.0.0.1 其他测试文件的所有内容都说: flag provided but not defined

你见过这个吗?

问候

原文由 Chris G. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 628
2 个回答

flag.Parse() 在定义标志之前被调用。

您必须确保在调用 flag.Parse() 之前发生所有标志定义,通常是通过在 init() 函数中定义所有标志。

原文由 JimB 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果你已经迁移到 golang 13,它改变了测试初始化程序的顺序,所以它可能会导致类似

flag provided but not defined: -test.timeout

作为一种可能的解决方法,您可以使用

var _ = func() bool {
    testing.Init()
    return true
}()

这将在应用程序之前调用测试初始化。更多信息可以在原始线程上找到:

https://github.com/golang/go/issues/31859#issuecomment-489889428

原文由 lanwen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题