go test flag:提供标志但未定义

时间:2015-04-17 13:01:49

标签: go

嗨我在go中测试时使用了一个标志:
file_test.go var ip = flag.String("ip", "noip", "test")

我只在一个测试文件中使用它。当只测试那个测试文件时,它运行正常,但是当我运行时: 另一个测试文件的go test ./... -ip 127.0.0.1个字段说:flag provided but not defined

你见过这个吗?

此致

2 个答案:

答案 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