2014-08-29 25 views
1

我有一個包pkg。包pkg的測試位於_test.go文件中。但是,爲了初始化測試運行器,我需要一個來自其他包的函數,因爲循環依賴性,我無法在pkg中導入該函數。* _test包訪問功能

我的想法是使用pkg_test包。
有沒有什麼辦法可以從pkgpkg_test訪問測試功能(_test.go文件)?

我的項目結構:

├── f.go # package pkg ├── f_test.go # package pkg ├── init_test.go # package pkg_test

換句話說:我想從f_test.go訪問功能init_test.go,反之亦然(從init_test訪問功能。去f_test.go有沒有辦法做到這一點

PS:?在f_test.go我無法導入pkg_test

回答

2

這通常是一個很好的機會:到

  • 無論是從pkg_test移動功能在pkg
  • 或模擬無論從pkg_test功能是幹什麼的,爲了不依靠初始化,通過一個接口(如mocking database

試圖繞過這個限制試圖解決依賴性問題,而不是解決它。這就是說,如果您可以在pkg_test中導入pkg,那麼是的,您可以從f_test.goinit_test.go中訪問函數。

+0

我不能將函數移動到pkg(因爲它需要其他包,它將在pkg中產生循環依賴 - 這是一個常見的測試初始值設定項)。我沒有辦法在'pkg_test'中導入'pkg' - 有沒有? – 2014-08-29 12:47:37

+0

@RobertZaremba不是我所知道的。我通常確保我可以嘲笑我需要的任何初始化,而不是試圖依賴它。 – VonC 2014-08-29 12:48:37