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