2016-07-26 130 views
0

我想在我的服務層的方法中單元測試這個代碼塊。 任何人都可以提出什麼可以(/應該)我測試在這裏,以及如何測試它們(尤其是插入數據庫部分)。任何指針(/示例代碼/文檔)將非常有幫助。在Java中嘲笑Db單元測試

if (element != null) { 
    id = iplDAO.loadGames(element, batchVO.getId()); 
    iplPartyDetailsVO = element.getParty(); 
    if iplPartyDetailsVO != null) { 
    try { 
     iplDAO.insertPartyDetails(iplPartyDetailsVO, id, batchVO.getId()); 
    } catch (Exception e) { 

     logger.logp("className"); 
     String err = "blah"; 
     iplDAO.insertIntoError(err_t); 
    } 
} 
+0

您是否擁有DAO代碼或是專有的? – Compass

+1

你可以分享'iplDAO'是如何創建/初始化的嗎? – Mureinik

+0

@Compass 是我們自己的DAO代碼 - 它的創建如下: 「公共類IPLDAO擴展BaseDAO實現TTDAO { \t在-自動裝配Autowired \t私人ITXXDAO txxDao; \t優先覆蓋 \t public int loadGames(..){ \t return id; } \t AT-覆蓋 \t公共布爾insertPartyDetails(A,B,C){ \t \t返回X; \t} }' 而在服務類中它的Autowired – user2666282

回答

0

我想你可能會混淆了嘲諷的測試,如果你試圖寫該服務層代碼,那麼你需要決定你有什麼期望測試,例如:

  • 從數據源加載一些遊戲
  • 保存一些東西(代碼中不清楚你實際上保存了什麼,但是編寫一些單元測試可能會使這更明顯)。

所以,如果這些你對你的代碼的期望,那麼你就需要編寫一個測試,可以確認他們已得到滿足。

這意味着mocking the dependency您呼叫(你的情況iplDAO對象),這樣每個方法調用返回的東西,可以用來測試你的功能 - 在你的情況下,這兩個電話:

iplDAO.loadGames(element,batchVO.getId()) 

iplDAO.insertPartyDetails(iplPartyDetailsVO, id,batchVO.getId()); 

有很多Java mocking libraries可供選擇,它們都是有據可查的,但this blog post是一個很好的起點。

+0

謝謝 - 所以你建議測試那些到道呼叫? 現在我的問題是我如何測試iplDAO.insertPartyDetails(iplPartyDetailsVO,id,batchVO.getId());沒有實際的插入? (可以使用db模擬幫助嗎?如果是這樣,請給我一個例子) – user2666282

+0

@ user2666282通過在你的類中使用模擬iplDAO對象(例如通過使用Mockito庫),你正在取代'真正的'iplDAO對象通常所做的(大概是讀取並插入數據庫)。所以不會有與數據庫的交互。 如果你發佈整個班級,那麼舉個例子會更容易些。 – tchambers