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