Никогда не позволяйте лучшему опыту или образцу одержимости подчинять вас себе.
Это должны быть руководящие принципы, а не законы, изложенные в камне.
И мне действительно нравятся шаблоны, и книга GoF более или менее так говорит об этом, материал для просмотра, предоставляющий общий жаргон. Не Евангелие от шарика и цепи.
Эту технику мы используем уже много лет. Обратите внимание, что когда дело доходит до имитации интерфейсов DAO, у вас есть несколько вариантов:
Динамические макеты фреймворков позволяют заглушить различные обстоятельства (нет данных, 1 строка, много строк, выброс исключения) без необходимости создавать сложные классы, чтобы заглушить поведение, которое вы хотите протестировать
Это отличный способ использовать имитацию для тестирования базы данных. Я не думаю, что необходимо какое-либо альтернативное предложение; Думаю, у вас уже есть правильная техника!
Вы определенно на правильном пути.
Мой фреймворк для насмешек Mockito
Насколько я понимаю, этот вопрос явно посвящен передовым методам тестирования уровней DAO, поскольку издевательство над базой данных кажется не таким простым, как издевательство над уровнем DAO при тестировании сервисов.
Лично я ' Я подниму вопрос, разумно ли действительно модульное тестирование уровня DAO в классическом смысле модульного тестирования. Если вы правильно спроектируете свой уровень DAO, он не сделает ничего больше, чем сопоставление объектов домена с запросами.
Тем не менее, я всегда предлагаю использовать встроенную базу данных, такую как H2, HSQL или встроенный Derby Java 6, чтобы делать такие вещи как имитацию источник данных действительно требует гораздо больше усилий, чем просто создание встроенной базы данных. Spring 3 предоставит хороший шаблон для создания таких баз данных на лету. RC1 также представит пространство имен jdbc
для дальнейшего упрощения настройки. Подробнее см. этот .
Но даже в текущей ветке Spring 2.5 с использованием встроенной базы данных достаточно взять JAR базы данных и соответственно настроить DataSource
.