EasyMock и Ibatis

На уровне DAO я выполняю всю работу с базой данных, вызывая хранимые процедуры. Мне было интересно, кто-нибудь был успешным в тестировании их слоя DAO с помощью EasyMock?

Спасибо Дэмиен

1 ответ

Решение

Я бы сказал, что это невозможно. Невозможно утверждать (с помощью EasyMock или иного фальшивого фреймворка), что DAO фактически вызвал некоторую хранимую процедуру, проверить, что она сделала, и т. Д.

Единственное, что вы можете сделать с DAO + EasyMock - это смоделировать / заглушить DAO, но тогда вы не тестируете DAO, а вместо этого работаете с DAO (обычно это какой-то контроллер, если мы говорим о MVC).

Для проведения интеграционного тестирования DAO/StoredProcedures я рекомендую DBUnit:

  1. Поместите тестовые данные в базу данных (если вы используете jUnit, сделайте это в методе @Before)
  2. Вызвать тестируемый метод DAO
  3. Если метод вернул какой-либо результат, сравните его с ожидаемыми данными в (1)
  4. Если метод выполнил некоторые вставки / обновления, вызовите "метод чтения" и сравните результат с (1)

В случае, если ваш DAO предоставляет CRUD для некоторого бизнес-объекта, вы можете протестировать каждую операцию вашего DAO:

  • testLoad - загрузить из БД и сравнить с (1)
  • testInsert - вставить новую сущность в БД, затем перезагрузить и сравнить
  • testUpdate - изменить существующую сущность, сохранить в БД и перезагрузить / сравнить
  • testDelete - удалить некоторую сущность из (1), затем попытаться загрузить ее и подтвердить, что она не удалась (также хорошо проверить, что больше ничего не было удалено)
Другие вопросы по тегам