使用模块化 Go 应用程序和利用特定应用程序模块的单元测试时,测试命令可能具有挑战性 -依赖于用户定义标志的线路功能。
考虑以下内容示例:
func init() { flag.StringVar(&this.customPath, "gamedir.custom", "", "Custom game resources directory") }
尝试使用以下命令测试此功能时:
go test -test.v ./... -gamedir.custom=c:/resources
运行时返回错误:
flag provided but not defined: -gamedir.custom
出现错误是因为 go test 命令同时运行各个测试。使用 -test.v 标志时,会创建多个测试可执行文件,每个测试可执行文件都有自己的命令行标志。如果特定测试未显式处理 -gamedir.custom 标志,它将失败并出现上述错误。
要解决此问题,请定义命令每个测试文件中的行标志。这确保每个测试可执行文件都可以处理必要的标志。
例如:
func TestMyModule(t *testing.T) { flag.StringVar(&this.customPath, "gamedir.custom", "", "Custom game resources directory") // Test code here... }
通过在每个测试函数中定义标志,我们确保所有测试可执行文件都定义了适当的标志并且可以正常运行。
以上是如何在 Go 单元测试中处理自定义命令行标志?的详细内容。更多信息请关注PHP中文网其他相关文章!