一尘不染

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

go

我有一个仅在设置位标志时才运行的测试文件。我遵循了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,所有其他包测试均失败:

flag provided but not defined: -myflag

我希望能够运行所有测试,而不必担心在每个测试文件中解析此标志。有没有办法做到我所缺少的?


阅读 314

收藏
2020-07-02

共1个答案

一尘不染

运行时,test ./...它会以相同的参数 每个程序包 作为单独的可执行文件
运行测试。因此,如果要向每个程序包传递一个标志,则每个程序包都必须接受它。您可能要改用env var,使用它的包可以读取它,而不使用它的包可以忽略它。

2020-07-02