test中的标志导致其他测试无法运行

时间:2018-04-19 18:16:11

标签: testing go

我有一个测试文件,我只想在设置位标志时运行。我按照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

我希望能够运行所有测试,而不必担心在每个测试文件中解析此标志。有没有办法做到这一点,我错过了?

1 个答案:

答案 0 :(得分:3)

当您运行test ./...时,它会将每个包的测试作为单独的可执行文件运行,并使用相同的参数。因此,如果您想将标志传递给每个包,则每个包都必须接受它。您可能希望使用env var,它可以被使用它的包读取,并被那些不被忽略的包忽略。