我有一个仅在设置位标志时才运行的测试文件。我遵循了golang的测试文档中的一个简单示例:
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,所有其他包测试均失败:
go test ./mypkg -myflag
go test ./... -myflag
flag provided but not defined: -myflag
我希望能够运行所有测试,而不必担心在每个测试文件中解析此标志。有没有办法做到我所缺少的?
运行时,test ./...它会以相同的参数 将 每个程序包 作为单独的可执行文件 运行测试。因此,如果要向每个程序包传递一个标志,则每个程序包都必须接受它。您可能要改用env var,使用它的包可以读取它,而不使用它的包可以忽略它。
test ./...