Проблема с тестированием баз данных, как можно догадаться, связана с данными.
Я думаю, что способ атаковать это иметь тестовую базу данных, соответствующую вашей производственной схеме. Сделайте то, что вам нужно, чтобы заполнить базу данных, протестировать объекты доступа к данным, а затем отбросить тестовую базу данных.
Другой подход состоит в том, чтобы создать набор данных, который, как вы знаете, вы должны получить, вставить его в базу данных, выполнить свой запрос и убедиться, что результат запроса соответствует набору данных, а затем откатить все обратно как одну транзакцию. Таким образом, ваши тестовые данные всегда свежие, но вы не наносите вреда своей базе данных.
Проверка базы данных DAO для модульного тестирования. Как только он заработает, вы должны высмеивать DAO при тестировании сервиса. Модульное тестирование службы означает, что вы больше не беспокоитесь о DAO. Просто убедитесь, что служба получает данные, необходимые для подтверждения ее правильной работы.