首頁 > 後端開發 > Golang > Go中如何實現與測試分離的程式碼的測試覆蓋率?

Go中如何實現與測試分離的程式碼的測試覆蓋率?

Mary-Kate Olsen
發布: 2024-10-29 20:56:29
原創
480 人瀏覽過

How to Achieve Test Coverage for Code Separated from Tests in Go?

與測試分離的程式碼的測試覆蓋率

儘管單獨組織測試文件有利於更乾淨的程式碼庫並將測試限制為公共API 交互,它對獲得被測目標包(在本例中為api_client)的覆蓋率提出了挑戰。

為了解決這個問題,我們可以在執行測試時利用 -coverpkg 標誌和套件名稱:

go test -cover -coverpkg "api_client" "api_client_tests"
登入後複製

此指令將執行為 api_client 套件啟用覆蓋的測試。

雖然允許將測試檔案與程式碼檔案分開,但需要注意的是,它偏離了 Go 的標準方法。這意味著包外部的測試無法存取包私有變數或函數,即使它們位於單獨的目錄中。

要強制進行黑盒測試,其中測試應僅訪問公共 API 方法,您仍然可以將測試保存在單獨的包中,而無需物理移動文件。例如:

<code class="go">// api_client.go
package api_client

// Private variable not accessible outside package
var privateVar = 10

func PublicMethod() {}</code>
登入後複製
<code class="go">// api_client_test.go
package api_client_tests

import (
    "testing"

    "api_client" // Import api_client package
)

func TestPublicMethod(t *testing.T) {
    api_client.PublicMethod()
}</code>
登入後複製

在此範例中,測試檔案無法存取 api_client.go 中的 privateVar 和 Method 函數,確保測試僅透過公用 API 進行互動。

以上是Go中如何實現與測試分離的程式碼的測試覆蓋率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板