首頁 > 後端開發 > Golang > 主體

如何將測試程式碼從一個模組導入到另一個模組而不將其暴露給生產程式碼?

PHPz
發布: 2024-02-09 21:00:10
轉載
592 人瀏覽過

如何將測試程式碼從一個模組導入到另一個模組而不將其暴露給生產程式碼?

php小編柚子在軟體開發中,我們經常需要對程式碼進行測試。但是,我們不希望將測試程式碼暴露給生產環境,以免造成不必要的混亂。那麼,如何將測試程式碼從一個模組導入到另一個模組而不將其暴露給生產程式碼呢?這是一個常見的問題,但也有解決方案。本文將為您介紹一種有效的方法來實現這一目標,讓您的程式碼更加安全可靠。

問題內容

TLDR:我在 logutils/test-logger_test.go 中放置了一個 TestLogger 結構,並嘗試在authentication/login_tests.go 中引用它。在為身份驗證模組建立測試時,編譯器抱怨未聲明 TestLogger。唯一的解決方法是將 test-logger_test.go 重新命名為 test-logger.go,但這存在在生產程式碼中引用 TestLogger 的風險。

在執行 go 測試時,golang 似乎不會將測試程式碼(在帶有 _test.go 後綴的檔案中宣告的程式碼)從一個模組匯入到另一個模組。我做錯了什麼或這是 golang 的設計方式嗎?有解決辦法嗎?

簡單的例子來說明:

我有一個「函式庫」模組(我們稱之為 il logutils)和「應用程式」模組(我們稱之為「身份驗證」)。 logutils 模組有自己的測試,涵蓋了記錄器的所有實作特定功能(例如 FileLogger、HttpLogger),一切都很好。

logutils 模組也聲明了一個 TestLogger,可供「用戶端」模組(如「驗證」)使用,以確保它們正確記錄所有內容,而無需設定檔案或 http 日誌記錄。它基本上只是實作了 Logger 接口,但只是將所有內容記錄到可以在測試結束時驗證的緩衝區。

因此,「身份驗證」模組可以聲明自己的 _test.go 文件,該文件實例化 TestLogger,這一切都像魅力一樣工作。

令我困擾的是TestLogger 需要在常規生產檔案(logutils/test-logger.go)中聲明,而不是在測試檔案(logutils/test-logger_test.go)中聲明,否則驗證測試會抱怨TestLogger未定義。但透過這樣做,沒有什麼可以阻止 TestLogger 在生產程式碼中被引用/使用。

我想要的是任何 logutils _test.go 檔案中的程式碼都可以在任何驗證 _test.go 檔案中匯入(但不能在生產 .go 檔案中匯入)。

有什麼見解/建議嗎?

編輯:修正拼字錯誤

解決方法

你不能擁有這個。簡單極了。 (不存在「生產 .go 檔案」之類的東西。測試程式碼不是「非生產」。)

以上是如何將測試程式碼從一個模組導入到另一個模組而不將其暴露給生產程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!