首頁  >  文章  >  後端開發  >  如何透過未匯出的函數重複使用 Go 中匯入包的測試程式碼?

如何透過未匯出的函數重複使用 Go 中匯入包的測試程式碼?

Patricia Arquette
Patricia Arquette原創
2024-11-04 03:48:29806瀏覽

How to Reuse Test Code from Imported Packages in Go with Unexported Functions?

在Go 中的導入包中重用測試代碼

在您的目錄結構中,您希望在pkg1_test.go 中有一個測試實用程式函數在main_test.go 中使用,它會匯入pkg1。然而,pkg1_test.go 中的函數使用了 pkg1 中未導出的函數,使其在包外不可用。

考慮以下方法:

將函數移至pkg1.go

雖然將函數移到pkg1.go 可以使其在main_test.go中訪問,但它可能會導致該函數包含在go build 生成的二進位檔案中。這對於僅測試函數來說是不可取的。

建立單獨的測試實用程式套件

將函數移至單獨的測試實用程式套件並在 *_test 中手動匯入。 go 檔案似乎很理想。但是,該函數仍然需要存取 pkg1 中的內部方法,這些方法可能無法匯出。

混合方法

對於您的特定場景,混合方法提供了解決方案:

  1. 將測試實用函數從pkg1_test.go移至新包,我們稱之為testutils。
  2. 在 main_test.go 和 pkg1_test.go 中導入 testutils。
  3. 在pkg1_test.go 中,加入以下函數:

    <code class="go">func getPrivateData() []byte {
        // Code to get internal data from pkg1
    }</code>
  4. 在testutils 中,從pkg1_test.go 中的getPrivateData 載入私有數據,並使用它來執行必要的操作

這種方法可讓您重複使用測試實用函數,同時將其與生產程式碼分開並避免未匯出函數的問題。

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

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