JMockit Hibernate Эмуляция - PullRequest
2 голосов
/ 10 июля 2009

Мне было интересно, кто-нибудь пробовал использовать JMockit Hibernate Emulation?

В документации Jmockit говорится, что при запуске тестов эмуляции Hibernate они не будут использовать информацию отображения O / R. Таким образом, это означает, что он не тестирует сопоставления O / R, строки запросов HQL, собственные запросы и т. Д. Тогда каковы же преимущества эмуляции Hibernate? Можно просто создать макет MyDAO и использовать его для тестирования. Зачем беспокоиться об эмуляции hibenrate, просто издевайтесь над всеми DAO. Что ты думаешь?

Спасибо.

1 Ответ

2 голосов
/ 22 июля 2009

Извлеките orderMngr.domain.customer.CustomerTest в примере набора тестов "jmockit / samples / orderMngmntWebapp", который находится в полном дистрибутиве JMockit. Этот тестовый класс основан на эмуляции Hibernate. Его можно запустить через цель «sampleTests» в «jmockit / build.xml».

Моя мотивация для создания этого инструмента в основном заключалась в том, что создание SessionFactory занимает слишком много времени, когда в проекте есть сотни сопоставленных объектов. (Это заняло около 20-30 секунд в проекте с 400+ классами сущностей.) Это, конечно, в комплекте интеграционных тестов. Для набора юнит-тестов этот инструмент бесполезен.

Идея заключалась в том, что разработчик мог бы быстро запускать интеграционные тесты в локальной среде разработки, чтобы тестировать бизнес-логику, но не персистентность, в то же время позволяя автоматизированному серверу сборки регулярно запускать полный набор тестов без эмуляции.

Обратите внимание, что HQL-запросы по-прежнему тестируются при использовании эмуляции Hibernate. Поддельная реализация будет анализировать строки HQL и выполнять запрос к экземплярам сущностей, «сохраненным» в памяти. Однако информация отображения O / R игнорируется.

Mocking DAOs также совершенно допустим, но тогда ваши тесты никогда не будут фактически проверять O / R-отображение, HQL-запросы или фактический доступ к базе данных. Используя эмуляцию Hibernate, вы не создаете макеты, но можете запускать тесты над фиктивной реализацией Hibernate, которая предоставляет нечто похожее на базу данных в памяти.

...