在Go 中的導入包中重用測試代碼
在您的目錄結構中,您希望在pkg1_test.go 中有一個測試實用程式函數在main_test.go 中使用,它會匯入pkg1。然而,pkg1_test.go 中的函數使用了 pkg1 中未導出的函數,使其在包外不可用。
考慮以下方法:
將函數移至pkg1.go
雖然將函數移到pkg1.go 可以使其在main_test.go中訪問,但它可能會導致該函數包含在go build 生成的二進位檔案中。這對於僅測試函數來說是不可取的。
建立單獨的測試實用程式套件
將函數移至單獨的測試實用程式套件並在 *_test 中手動匯入。 go 檔案似乎很理想。但是,該函數仍然需要存取 pkg1 中的內部方法,這些方法可能無法匯出。
混合方法
對於您的特定場景,混合方法提供了解決方案:
在pkg1_test.go 中,加入以下函數:
<code class="go">func getPrivateData() []byte { // Code to get internal data from pkg1 }</code>
這種方法可讓您重複使用測試實用函數,同時將其與生產程式碼分開並避免未匯出函數的問題。
以上是如何透過未匯出的函數重複使用 Go 中匯入包的測試程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!