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

问题描述 投票:17回答:2

[嗨,我在进行测试时使用的是标志:file_test.govar ip = flag.String("ip", "noip", "test")

我仅在一个测试文件中使用它。它仅在测试一个测试文件时有效,但是在我运行时:其他测试文件的go test ./... -ip 127.0.0.1 alle说:flag provided but not defined

您看到了吗?

问候

go
2个回答
14
投票

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

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


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

© www.soinside.com 2019 - 2024. All rights reserved.