2013-05-21 113 views
2

這是一個關於在使用IoC容器時如何公開構造函數的稍微深奧的問題。我使用java,Guice和Junit4,但我確定這個問題更一般。注入的構造函數,單元測試和最佳實踐

根據Guice文檔中的最佳實踐,它說"Keep constructors as hidden as possible"。這是我非常同意的,所以我很高興繼續讓我的構造函數保持私有化並依靠Guice實例化。

但是,這帶來了嘲笑類和單元測試的問題。如果我所有的構造函數都是私有的,那麼我怎樣才能在單元測試中實例化某些東西並傳遞模擬的依賴關係?不得不爲每個單元測試創​​建一個新的Guice模塊對我來說似乎過度。當然,我必須實際公開這些構造函數。

這使我想到了一個問題:由於在與單元測試相結合DI是如此有用,是關於保持構造函數實際上隱藏着一個錯誤的吉斯文檔的最佳實踐?

回答

5

在同一文檔中進一步閱讀,這表明給予構造函數默認訪問權限。然後把你的單元測試放在同一個包裏。

如果沒有指定publicprotectedprivate,則會提供默認訪問權限。

從你所引用的文件:

爲校正,簡單地限制你都實現類的可見性,以及它們的構造。典型地,包專用優選兩者,因爲這有利於:

  • 結合類模塊內在相同的封裝
  • 單元通過直接實例化的手段
+0

咄的,測試的類課程。對不起,作爲一個白癡。 – saltyseadog