首頁  >  文章  >  後端開發  >  如何在 Go 中測量具有單獨測試檔案的套件的覆蓋率?

如何在 Go 中測量具有單獨測試檔案的套件的覆蓋率?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 20:18:30754瀏覽

 How Can I Measure Coverage for a Package with Separated Test Files in Go?

使用單獨的測試文件測試包覆蓋率

在組織包含大量測試文件的程式碼庫時,將測試與實際情況分開可能會更有利程式碼庫清晰並遵守最佳實踐。在這種情況下,測試文件可能與被測程式碼駐留在不同的套件中。

取得實際被測包的覆蓋率統計資料時會出現一個潛在的挑戰。預設情況下,測試僅覆蓋它們所在的套件。此問題源自於 Go 的方法,該方法規定程式碼和測試檔案應共存於同一個套件中。

幸運的是,Go 為這個困境提供了解決方案:

go test -cover -coverpkg "api_client" "api_client_tests"

透過指定「-coverpkg」標誌,您可以指示Go 測量指定套件(本例中為「api_client」)的覆蓋率),同時從單獨的套件(「api_client_tests」)執行測試。這使您可以準確地確定 API 客戶端套件的覆蓋範圍,而無需將其與測試文件合併。

替代方法

雖然使用單獨的測試包可以雖然在組織方面提供了好處,但值得注意的是,這種方法偏離了傳統的Go 組織程式碼和測試的方式。如果黑盒測試是您的主要目標,其中只有公共包 API 可供測試訪問,則可以使用替代方法:

  1. 將測試文件與程式碼保存在同一包中。
  2. 使用「內部」可見性修飾符來限制對套件私有方法和變數的訪問,確保只有套件的公共 API 才會暴露給測試。

以上是如何在 Go 中測量具有單獨測試檔案的套件的覆蓋率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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