在Go 專案中的不同資料夾中對程式碼進行單元測試時,您可能會遇到代碼覆蓋率報告的差異。這可能會令人沮喪,因為您可能希望在子資料夾中執行測試時覆蓋所有程式碼。
問題:
儘管從stuff_test 資料夾中,覆蓋率報告顯示覆蓋的語句為 0%。涉及以下項目結構:
stuff/stuff.go -> package: stuff test/stuff/stuff_test.go -> package: test
可能原因:
程式碼覆蓋率分析預設僅限於正在測試的套件。在這種情況下,stuff_test 套件位於與 stuff 套件不同的資料夾中,這導致了問題。
解決方案:
要解決此問題,您可以使用執行 go test 時的 -coverpkg 選項。此選項可讓您指定要收集覆蓋率資訊的套件。
go test ./test/... -coverprofile=cover.out -coverpkg ./...
此指令將對與指定模式相符的所有套件套用覆蓋率分析,在本例中是目前目錄及其子目錄。
查看覆蓋率報告:
測試運行後,您可以使用 go tool cover 指令產生覆蓋率報告。
go tool cover -html=cover.out
此命令將建立一個名為 cover.out 的 HTML 報告,您可以在 Web 瀏覽器中開啟該報告以查看所有指定的覆蓋率資訊包。
以上是為什麼在跨單獨資料夾進行測試時,我的 Go 程式碼覆蓋率報告顯示 0%?的詳細內容。更多資訊請關注PHP中文網其他相關文章!