首頁 >後端開發 >Golang >如何在 Go 中重複使用導入包的測試程式碼?

如何在 Go 中重複使用導入包的測試程式碼?

Linda Hamilton
Linda Hamilton原創
2024-11-04 07:12:30513瀏覽

How Can We Reuse Test Code from Imported Packages in Go?

在匯入的套件中重複使用測試程式碼

管理複雜的程式碼庫時,重複測試程式碼的能力對於高效且可維護的測試實踐至關重要。本文探討了開發人員面臨的常見挑戰:重複使用導入套件中的測試程式碼。

考慮以下情境:專案具有以下目錄結構:

/
|-- main.go
|-- main_test.go
|-- pkg1
    |-- pkg1_test.go

main.go 匯入pkg1 並包含依賴 pkg1 中未匯出函數的程式碼。 pkg1_test.go 包含一個實用函數 verifyTaskNumber,它呼叫 pkg1 中的內部函數。然而,main_test.go 需要在自己的測試中使用 verifyTaskNumber。

為了解決這個問題,提出了兩個可能的解決方案:

  1. 將 verifyTaskNumber 移至 pkg1.go。這允許 main_test.go 直接存取函數。但是,verifyTaskNumber 可能包含在 go build 產生的二進位檔案中,使其無法進行測試。
  2. 建立一個單獨的 testutility 套件,包含 verifyTaskNumber,並將其匯入到 main_test.go 和 pkg1_test.go 中。雖然這允許存取該函數,但它創建了對 testutility 的依賴,而 testutility 本身又依賴 pkg1。

這兩種解決方案都沒有提供無縫且高效的方法來重複測試程式碼。另一個解決方案是將 verifyTaskNumber 移至在 main_test.go 和 pkg1_test.go 中匯入的 utils 套件。為了解決對 pkg1 中未導出函數的依賴,可以將內部函數的結果保存到支援檔案中並由 utils 套件載入。這避免了對未導出函數的依賴,同時提供對多個測試包中的測試實用程式的存取。

以上是如何在 Go 中重複使用導入包的測試程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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