2016-07-26 129 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