2 回答

TA貢獻1876條經驗 獲得超5個贊
我沒有直接的答案,但我遇到了類似的問題,也許我的過程可以幫助您解決問題。
首先,是你的朋友。Go 文檔、參考和 Go 一般都是關于提高你的工作效率。因此,Go團隊投入了大量精力來解釋好事情。go help
go help test是開始獲取有關標志信息的好地方,但它沒有列出 .然而,它確實指出:-coverpkggo help testflag
測試二進制文件還接受控制測試執行的標志;這些標志也可以通過“go test”訪問。有關詳細信息,請參閱“轉到幫助測試標志”。
go help testflag有這樣說的:-coverpkg
-coverpkg pattern1,pattern2,pattern3
Apply coverage analysis in each test to packages matching the patterns.
The default is for each test to analyze only the package being tested.
See 'go help packages' for a description of package patterns.
Sets -cover.
強調“默認是每個測試僅分析正在測試的包”,這意味著如果我依賴于包函數,如果我逐個包地工作,我可能會遇到問題。init()
如果你想遵循單獨運行每個包的建議,你可以在模塊的根目錄中使用獲取所有包的列表,然后使用一些shell腳本來循環訪問它們。coverpkggo list ./...
最終,在我的情況下,我推斷出這是逐個測試每個包,因此可能逐個加載包。因此,我能夠將問題范圍縮小到包的功能。不知道為什么它會導致問題,但是從函數中移出幾行可以進入函數,解決了我的問題。-coverpkginit()init()main()
(我也很幸運,錯誤消息很容易谷歌,我知道它與CLI標志解析有關。請參閱在測試文件中使用主銷)
- 2 回答
- 0 關注
- 209 瀏覽
添加回答
舉報