首页 >后端开发 >Golang >如何在 Go 单元测试中有效测试命令行参数?

如何在 Go 单元测试中有效测试命令行参数?

Barbara Streisand
Barbara Streisand原创
2024-12-20 00:46:09697浏览

How Can I Effectively Test Command-Line Arguments in Go Unit Tests?

在 Go 单元测试中测试命令行参数

在您的问题中,您提到了在 Go 单元中使用命令行标志的问题测试。您有一个模块化应用程序,其中的测试使用不同的应用程序模块集,其中一些模块是通过命令行标志进行调整的。但是,当您使用自定义命令行标志运行测试时,您会收到一条错误,指出该标志未定义。

根本问题是测试可执行文件应用所有命令行参数,除非其中一个或其中更多的内容被忽略。在您的情况下,您有多个测试,其中一些使用自定义标志,而另一些则不使用。

要解决此问题,您有两个选择:

  • 分别为每个 _test.go 文件运行 go test: 分别为每个测试传递适当的参数集。例如:
go test -test.v ./testfile1_test.go -gamedir.custom=c:/resources
go test -test.v ./testfile2_test.go
  • 忽略测试中未使用的标志:修改您的测试文件以忽略未使用的标志。例如,在不使用 -gamedir.custom 标志的测试中,可以添加以下代码:
var customPath string
func init() {
    flag.StringVar(&customPath, "gamedir.custom", "", "Custom game resources directory")
}
func TestFunc(t *testing.T) {
    if testing.Short() {
        return
    }
    t.Skip("Skipping this test as it uses `-gamedir.custom` flag")
}

testing.Short() 检查用于确定测试是否在短模式下运行,这通常是同时运行所有测试时的情况。如果测试在短模式下运行,它将被跳过。否则,测试将被跳过,因为 -gamedir.custom 标志未被使用。

以上是如何在 Go 单元测试中有效测试命令行参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn