首页 > 后端开发 > Golang > 如何在 Go 单元测试中处理自定义命令行标志?

如何在 Go 单元测试中处理自定义命令行标志?

Susan Sarandon
发布: 2024-11-29 09:31:12
原创
612 人浏览过

How to Handle Custom Command-Line Flags in Go Unit Tests?

在 Go 单元测试中自定义命令行标志

使用模块化 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板