Извлеките 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, которая предоставляет нечто похожее на базу данных в памяти.