首頁 >後端開發 >Golang >為什麼在跨單獨資料夾進行測試時,我的 Go 程式碼覆蓋率報告顯示 0%?

為什麼在跨單獨資料夾進行測試時,我的 Go 程式碼覆蓋率報告顯示 0%?

Patricia Arquette
Patricia Arquette原創
2024-11-25 09:55:12693瀏覽

Why Does My Go Code Coverage Report Show 0% When Testing Across Separate Folders?

調試單獨的Go 資料夾中的程式碼覆蓋率不一致

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn