Тест джунит с дао создать и получить идентификатор
У меня есть этот сервис, для которого мне нужно создать Unit test:
SomeObject obj = new SomeObject();
String objConfig = "<root id=%id% param1="something">....</root>"
obj.setField1("value1");
obj.setField2("value2");
someObjectDao.create(obj);
Long objId = obj.getId();
obj.setConfig(objConfig.replace("%id%", objId.toString()));
someObjectDao.update(obj);
Теперь проблема в том, что в реальном случае создание DAO назначит ID для объекта, но как мне установить ID объекта через модульный тест?
1 ответ
Вы можете сделать это двумя способами (если вы используете JUnit 4):
Используйте реальный DAO и пометьте тестовый класс как @Transactional и @Rollback. Каждый тестовый метод будет открыт в отдельной транзакции, запись будет вставлена в базу данных и обработана, как в реальной системе, но после отката выхода из метода произойдет.
Используйте какой-нибудь фальшивый фреймворк, например, метод mockito, mock create() для someObjectDao, устанавливая id по своему усмотрению