2016-07-26 2 views
0

Я пытаюсь выполнить тестирование этого кода в методе на моем уровне обслуживания. Может ли кто-нибудь предложить, что может (/ должен) проверить здесь и как их протестировать (особенно вставить в db-часть). Любые указатели (/ code code/doc) будут очень полезны.Mocking Db in Java Unit тесты

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 At-Override \t public int loadGames (..) { \t return id; } \t Ат-Override \t общественные булевы insertPartyDetails (а, б, в) { \t \t возврата х; \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

Спасибо, что вы рекомендуете тестировать их на звонки dao? теперь мои вопросы: как я могу проверить iplDAO.insertPartyDetails (iplPartyDetailsVO, id, batchVO.getId()); без фактической вставки? (Может ли db mock помочь? Если это так, пожалуйста, укажите мне пример) – user2666282

+0

@ user2666282 Используя объект mock iplDAO в вашем классе (например, используя библиотеку Mockito), вы заменяете то, что обычно делает объект «real» iplDAO (предположительно чтение и вставка в БД). Таким образом, взаимодействие с базой данных не будет. Если вы публикуете весь класс, вам будет проще привести пример. – tchambers