Go test flag: флаг предоставлен, но не определен

Привет, я использую флаг при тестировании в go:
file_test.go var ip = flag.String("ip", "noip", "test")

Я использую это только в одном тестовом файле. И он отлично работает, когда тестирует только один тестовый файл, но когда я запускаю: go test ./... -ip 127.0.0.1 alle другого тестового файла: flag provided but not defined.

Вы видели это?

Привет

Ответ 1

flag.Parse() вызывается до того, как будет определен ваш флаг.

Вы должны убедиться, что все определения флагов происходят до вызова flag.Parse(), как правило, путем определения всех флагов внутри функций init().

Ответ 2

Если вы перешли на Голанг 13, он изменил порядок инициализации теста, так что это может привести к чему-то вроде

flag provided but not defined: -test.timeout

в качестве возможного обходного пути, вы можете использовать

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

это вызвало бы инициализацию теста перед приложением. Более подробную информацию можно найти в оригинальной теме:

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