Модульное тестирование DAO

Я просматривал EasyMock и учебные пособия/примеры его использования для классов DAO модульного тестирования, для теста "вне контейнера". Однако я думаю, что большинство из них вместо этого говорят о тестировании сервисного уровня, высмеивая класс DAO. Я немного сбит с толку, действительно ли вы модульно тестируете слой DAO?

Кто-то скажет, что тесты, взаимодействующие с БД и EJB, на самом деле являются интеграционными тестами, а не модульными тестами, но тогда как вы узнаете, верен ли ваш SQL (при условии отсутствия ORM) и ваш DAO вставляет/запрашивает правильные данные из вашего реального (читай, локальная база данных, похожая на продакшн) база данных?

Я читал, что DBUnit — решение для такой ситуации. Но мой вопрос касается использования такой структуры, как DBUnit «внешний контейнер». Что, если DAO зависит от некоторых EJB, как мы обрабатываем транзакции, что происходит, если есть триггеры, которые обновляют другие таблицы в ваших вставках?

Каков наилучший способ модульного тестирования только DAO с такими зависимостями?

22
задан Dchucks 22 March 2012 в 05:38
поделиться