我有一个测试文件,我只想在设置位标志时运行。我按照golang's testing docs:
中的简单示例package mypkg
var myFlagSet = flag.Bool("myflag", false, "")
func TestMain(m *testing.M) {
flag.Parse()
if *myFlagSet {
os.Exit(m.Run())
}
}
如果我运行go test ./mypkg -myflag
,它会按预期运行。但是,当我运行go test ./... -myflag
时,所有其他包测试都会失败:
flag provided but not defined: -myflag
我希望能够运行所有测试,而不必担心在每个测试文件中解析此标志。有没有办法做到这一点,我错过了?
答案 0 :(得分:3)
当您运行test ./...
时,它会将每个包的测试作为单独的可执行文件运行,并使用相同的参数。因此,如果您想将标志传递给每个包,则每个包都必须接受它。您可能希望使用env var,它可以被使用它的包读取,并被那些不被忽略的包忽略。