Get Растущее объектно-ориентированное программное обеспечение, руководствуясь тестами . Там есть несколько полезных советов о том, как проверить доступ к базе данных.
Лично я обычно разбиваю тесты DAO на 2, модульный тест с проверенной базой данных для проверки функциональности в DAO и интеграционный тест для тестирования запросов к БД. Если ваш DAO имеет только код доступа к базе данных, вам не потребуется юнит-тест.
Одно из предложений, которое я взял из книги, заключается в том, что (интеграционный) тест должен фиксировать изменения в БД. Я научился делать это после использования hibernate и выяснения, что тест был помечен для отката, и БД так и не получила оператор вставки. Если вы используете триггеры или любой вид проверки (даже FK), я думаю, что это необходимо.
Другое дело, держитесь подальше от dbunit, это отличный фреймворк, чтобы начать работать, но он становится адским, когда проект становится чем-то большим, чем крошечный. Здесь я предпочитаю иметь набор классов Test Data Builder для создания данных и вставки их в настройку теста или в сам тест.
И проверьте dbmigrate, это не для тестирования, но это поможет вам управлять сценариями для обновления и понижения вашей схемы БД.
В сценарии, где используется сервер БД, я создаю одну схему / пользователя на среду. Поскольку у каждого разработчика есть своя «локальная» среда, он также владеет одной схемой.