这个问题类似于go test flag: flag provided but not defined,但是由于该问题不包含最小示例并且答案非常高级,所以我再问一次。在带有 amain.go和 a的 Go 模块中main_test.go,
.
├── go.mod
├── go.sum
├── main.go
└── main_test.go
main.go定义一个sayHi标志:
package main
import (
"flag"
"fmt"
)
var sayHi bool
func init() {
flag.BoolVar(&sayHi, "sayHi", false, "Say hi or not")
flag.Parse()
}
func main() {
if sayHi {
fmt.Println("Hi!")
}
}
这main_test.go只是一个占位符测试:
package main
import "testing"
func TestSayHi(t *testing.T) {
}
问题是,如果我尝试运行测试,我会收到“已提供标志但未定义”错误:
> go test ./...
flag provided but not defined: -test.testlogfile
Usage of /var/folders/tp/s7nwwdws1wj0z8s0vftppnnc0000gn/T/go-build952058535/b001/my-module.test:
-sayHi
Say hi or not
FAIL github.com/kurtpeek/my-module 0.192s
FAIL
从上述问题的答案来看,
您必须确保所有标志定义都发生在调用之前flag.Parse(),通常是通过在init()函数中定义所有标志。
我不明白这不是在这里完成的吗?
MM们
开满天机
相关分类