EasyMock и Ibatis
На уровне DAO я выполняю всю работу с базой данных, вызывая хранимые процедуры. Мне было интересно, кто-нибудь был успешным в тестировании их слоя DAO с помощью EasyMock?
Спасибо Дэмиен
1 ответ
Я бы сказал, что это невозможно. Невозможно утверждать (с помощью EasyMock или иного фальшивого фреймворка), что DAO фактически вызвал некоторую хранимую процедуру, проверить, что она сделала, и т. Д.
Единственное, что вы можете сделать с DAO + EasyMock - это смоделировать / заглушить DAO, но тогда вы не тестируете DAO, а вместо этого работаете с DAO (обычно это какой-то контроллер, если мы говорим о MVC).
Для проведения интеграционного тестирования DAO/StoredProcedures я рекомендую DBUnit:
- Поместите тестовые данные в базу данных (если вы используете jUnit, сделайте это в методе @Before)
- Вызвать тестируемый метод DAO
- Если метод вернул какой-либо результат, сравните его с ожидаемыми данными в (1)
- Если метод выполнил некоторые вставки / обновления, вызовите "метод чтения" и сравните результат с (1)
В случае, если ваш DAO предоставляет CRUD для некоторого бизнес-объекта, вы можете протестировать каждую операцию вашего DAO:
testLoad
- загрузить из БД и сравнить с (1)testInsert
- вставить новую сущность в БД, затем перезагрузить и сравнитьtestUpdate
- изменить существующую сущность, сохранить в БД и перезагрузить / сравнитьtestDelete
- удалить некоторую сущность из (1), затем попытаться загрузить ее и подтвердить, что она не удалась (также хорошо проверить, что больше ничего не было удалено)