EasyMock и Ibatis - PullRequest
       33

EasyMock и Ibatis

0 голосов
/ 03 марта 2011

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

Спасибо, Дамьен

1 Ответ

3 голосов
/ 03 марта 2011

Я бы сказал, что это невозможно.Нет никакого способа утверждать (с помощью 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), затем попытайтесь загрузитьэто и утверждает, что это терпит неудачу (также хорошо проверить, что больше ничего не было удалено)
...