Хотя я большой поклонник модульного тестирования в целом, я считаю, что он имеет ограниченную ценность для DAO.
Что я видел, так это то, что при написании тестов вполне возможно (с использованием любого из насмешливых API - JMock , EasyMock и т. Д.), Они, как правило, работают прямо - off (логика настолько проста, насколько они не могут) ломаться, только когда вы меняете код (например, добавляете значение), и это просто делает их бременем для базы кода.
Я думаю, это потому, что мои DAO обычно следуют форме:
- получить соединение.
- создать заявление.
- заданные значения.
- чтение значений (для операций загрузки).
- очистка.
Затем вы делаете предположения о том, как драйвер JDBC будет работать (работает), и вы получите тест, который действительно ничего не делает, кроме тестирования некоторого простого кода, вызываемого в порядке его объявления.
Ошибки, возникающие из DAO, обычно происходят в базе данных (нарушения ключа, ошибки в хранимых процессах и т. Д.), И если вы не используете систему в целом, вы не увидите этих ошибок.
В наши дни я склоняюсь к тому, чтобы на более высоких уровнях тестирования - интеграции и т. П. - при этом выполнялся код DAO, попадающий в реальную базу данных и, надеюсь, обнаруживший ошибки, о которых я упоминал, раньше, чем позже.