Я рассматривал EasyMock и учебники/примеры вокруг его использования для классов DAO для Unit Testing для теста "снаружи контейнера". Тем не менее, я думаю, что большинство из них говорит о тестировании уровня обслуживания вместо этого, издеваясь над классом DAO. Я немного смущен, действительно ли это, как вы Unit Test слой DAO?
Некоторые скажут, что тесты, взаимодействующие с БД и EJB, на самом деле являются тестами интеграции, а не модульными тестами, но тогда как вы узнаете, правильно ли ваш SQL (при отсутствии ORM), и ваши DAO вставляют/запрашивают правильные данные из вашего реального (чтение, локальная база данных, похожая на базу данных)?
Я читал, что DBUnit - это решение для такой ситуации. Но мой вопрос заключается в использовании инфраструктуры, такой как DBUnit "внешний контейнер". Что, если DAO зависит от некоторых EJB, как мы обрабатываем транзакции, что произойдет, если есть триггеры, которые обновляют другие таблицы в ваших вставках?
Как лучше всего использовать Unit Test только DAO с такими зависимостями?