嗨我在go中测试时使用了一个标志:
file_test.go
var ip = flag.String("ip", "noip", "test")
我只在一个测试文件中使用它。当只测试那个测试文件时,它运行正常,但是当我运行时:
另一个测试文件的go test ./... -ip 127.0.0.1
个字段说:flag provided but not defined
。
你见过这个吗?
此致
答案 0 :(得分:11)
flag.Parse()
在您的旗帜定义之前被调用。
您必须确保在调用flag.Parse()
之前发生所有标志定义,通常是通过定义init()
函数内的所有标志。
答案 1 :(得分:6)
如果您已迁移到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