go test: flag provided but not defined: -test.timeout


在为某个项目添加了通过命令行获取指定配置的模块后,在一些模块内部跑test发生了如下错误:

flag provided but not defined: -test.timeout

很显然,跑go test时涉及到了flag解析。

go test是以package为单位进行测试的(无论是否通过-run指定特性test函数),所以一定是test所在的包内包含了flag解析逻辑或import了需要进行flag解析的其他package.

此错误有些类似于package的循环引用。

一般来说考虑如下解除方式:

1. 先不使用flag模块,即注释相关的内容。 --工作量大,大型项目不合适

2. 单独起一个test文件夹,里边只放test相关的模块,并去除掉引用了flag的模块,如需使用此类模块,可以把把其中需要用的对象也拷贝一份。 --较繁琐且涉及flag解析时依旧有问题

3. 最后编写config相关模块,在这之前做好测试工作。 --还是很麻烦

4. 单独设置一个flag模块进行InitFlag(),返回需要的参数列表,其他package中引用此处的初始化函数。

使用cobra等第三方的命令行可以比较方便的跳过此错误,一般来说就是要将flag解析独立出去即可,防止go test调用flag解析。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM