在Go 覆蓋範圍中包含包呼叫
問題:
問題:在一個項目在中多包結構中,目前測試包之外的包中的某些功能將被覆蓋率報告忽略。具體來說,位於 db 套件中的 bar.go 中的函數儘管是從 api 套件中的 foo.go 調用的,但並未顯示任何覆蓋範圍。
解決方案:至解決這個問題,應該將 -coverpkg 標誌加入 go test 指令中。 -coverpkg 標誌指定覆蓋率報告包含哪些套件。
說明:go test -coverpkg=./... coverprofile=coverage.out ./...預設情況下,覆蓋率報告僅包含測試直接導入的包包裹。在這種情況下,foo_test.go(foo.go的測試包)不會直接匯入db,因此bar.go中的函數不會被覆寫。 新增-coverpkg標誌明確包含指定的套件在覆蓋率分析中。在這種情況下,以下命令將在覆蓋率報告中包含目前目錄(./...) 中的所有套件:
這將產生一個覆蓋率報告,其中包括對bar的函數呼叫。來自 foo.go。
注意:使用 -coverpkg 標誌可能會影響測試執行時間,因為它需要分析大量的套件。但跨包函數呼叫需要取得準確的覆蓋率資訊。以上是如何在我的 Go 覆蓋率報告中包含外部套件呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!