2013-08-21 22 views
0

我用之前休眠和我需要的openSession使用同樣,Hibernate.initialize()同樣,Hibernate.initialize(x.getXX)同春和JUnit

但顯然春季,如果的OpenSessionInViewInterceptor設置得當,它可以在任何地方使用Hibernate.Initialize()。

我的問題是,我必須設置在JUnit的使用狀態,Hibernate.initialize()?

+0

你可能會問錯了問題,彈簧具有用於測試你的數據庫的代碼很好的支持。如果你使用spring,你爲什麼要在你的測試中進入這個複雜的等級?你試圖測試什麼? – andygavin

回答

0

OpenSessionInViewInterceptor整點恰恰是離開Hibernate會話,直到視圖已經被渲染。這就是爲什麼你可以叫Hibernate.initialize()「無處不在」:直到請求被認爲已經完全處理的春天不會關閉會話。

因此,答案總是一樣的:要能夠調用這個方法,會話必須打開。

+0

我如何才能JUnit測試我的控制器/服務代碼? – user4127

+0

控制器應該通過嘲笑服務來測試。應該通過模擬DAO和其他服務依賴性來測試服務。你不應該在這樣的單元測試中處理Hibernate。 Hibernate只應該在測試DAO時相關:你填充一個測試數據庫,使用被測試的DAO執行你的查詢,並檢查查詢是否返回正確的值。 –

+0

以及如果我希望針對數據庫進行單元測試以確保準確性。我怎樣才能做到這一點? – user4127

相關問題