2011-01-26 81 views
1

厭倦了手工製作的模擬,我正在嘗試將Mockito引入到我的項目中。替代部分嘲弄?

假設我有一堆數據庫訪問器隔離給定用例(或服務)的所有Hibernate查詢。所以我可以有RoutingDao,UserDao,ReportingDao等接口。這些接口中的每一個都使用諸如commit(),rollback()reload(Entity)的方法擴展了非常通用的Dao。對於Hibernate,後者應該用當前會話重新加載分離的實體。在測試中,它應該返回它的參數。

有手工製作的嘲笑很容易:我有一個MockDao共同實施這一方法,並MockRoutingDao將擴展MockDao和使用實施。我在Mockito中看到的一種方式是創建MockRoutingDao,它擴展了MockDao並將未解鎖的調用委託給它。非遺傳方法會被spy()嘲笑。但是這很醜陋 - 我仍然需要手工製作一個模擬器,並且部分嘲諷繼承的部分嘲諷的一些想法是一團糟。

我該如何改進? 爲許多測試可以重複使用的模擬方法創建共享實現的最佳實踐是什麼?

+0

你看過EasyMock嗎? – Griff 2011-01-26 16:41:20

回答

1

你真的想編寫一個org.mockito.stubbing.Answer實現來處理每個* DAO模擬將要處理的常見東西。

您仍然可以爲此添加自定義when存根。