首頁 >後端開發 >Golang >如何獲得 Go 中外部測試的準確覆蓋率統計數據?

如何獲得 Go 中外部測試的準確覆蓋率統計數據?

Patricia Arquette
Patricia Arquette原創
2024-10-27 16:02:29275瀏覽

 How to Get Accurate Coverage Stats for External Tests in Go?

外部測試的覆蓋率統計

在 Go 中,建議將測試保留在與正在測試的程式碼相同的套件中。但是,如果您的程式碼庫由大量測試文件組成,您可能會更喜歡透過將這些測試分離到不同的套件中來實現更清晰的組織。這種方法將測試限制為存取包的公共 API,從而促進更好的組織和封裝。

給出以下結構:

api_client:
    Client.go
    ArtistService.go

api_client_tests:
    ArtistService.Events_test.go
    ArtistService.Info_test.go
    UtilityFunction.go

執行 go test bandintown-api/api_client_tests -cover 報告 100%覆蓋率,但此覆蓋率僅適用於 UtilityFunction.go。

解:

在不合併包的情況下取得測試中api_client 套件的覆蓋率統計資料:

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

但是值得注意的是,將程式碼和測試檔案分離到不同的目錄與Go 約定相衝突。如果需要黑盒測試,即無法存取包裝外部的任何內容,請考慮將測試移至新包裝而不重新組織檔案:

api_client.go:

<code class="go">package api_client

// Only accessible within the package
var privateVar = 10

func Method() {}</code>

api_client_test.go:

<code class="go">package api_client_tests

import "testing"

func TestClient(t *testing.T) {
    Method() // Still accessible from another package
}</code>

以上是如何獲得 Go 中外部測試的準確覆蓋率統計數據?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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