2016-01-10 4 views
0

Я пытаюсь выполнить единичный тест по методу класса DAO. Класс Dao использует JDBC. Я пытаюсь выполнить его тестирование, но без использования тестовой базы данных. Я должен проверить его, используя некоторую структуру данных для хранения всей информации.Spring unit Тест на класс DAO с использованием jdbc JAVA

public class UserProfilesDao extends JdbcDaoSupport { 

    @Autowired 
    private MessageSourceAccessor msa; 

     public long getUserServiceId(long userId, int serviceId) { 
      String sql = msa.getMessage("sql.select.service_user_id"); 
      Object[] params = new Object[] { userId, serviceId }; 
      int[] types = new int[] { Types.INTEGER, Types.INTEGER }; 
      return getJdbcTemplate().queryForLong(sql, params, types); 
     } 
} 
+1

Итак, в чем вопрос? –

+0

Вы слышали о насмешках или парном разряде? – SMA

+0

@SMA да знают о Mocking, но до сих пор я писал тесты без использования базы данных. Вот почему я прошу здесь привести пример. – NoSuchUserException

ответ

0

Вы можете хранить данные в объектах DTO и поддерживать DTO на карте с соответствующими ключами. Для проверки, извлеките данные с карты, используя ключ в соответствии с вашими потребностями!

1

getJdbcTemplate() - это метод, который вы хотите издеваться.

В тестовом модуле, объявить элемент UserProfilesDao следующим образом:

@Spy 
private UserProfilesDao classToTest; 

@Spy является Mockito аннотаций.

в тестовом модуле объявить метод установки следующим образом:

@Before 
public void preTestSetup() 
{ 
    MockitoAnnotations.initMocks(this); 

    doReturn(what ever you want).when(classToTest).queryForLong(
     any(xxx.class), 
     any(yyy.class), 
     any(zzz.class)); 
} 

где ххх, ууу, и ZZZ являются типы параметров queryForLong.

+0

Спасибо :) В doReturn (...) что я должен писать. Правильно ли вернуть пользователя по id? – NoSuchUserException

+0

Есть ли причина для шпионажа DAO, а не издевательства над ним? –

+0

вы шпион, потому что это класс, который вы на самом деле тестируете. Почему вы издеваетесь над классом, который вы пытаетесь проверить? Это кажется контрпродуктивным – DwB

Смежные вопросы