Как определить две единицы персистентности (одну для производства, одну для модульного тестирования)? - PullRequest
8 голосов
/ 05 октября 2010

Это мой компонент без сохранения состояния:

@Stateless
public class Finder {
  @PersistenceContext(unitName = "production")
  EntityManager em;
  [...]
}

Он явно определяет, что имя единицы персистентности - production.Это устройство настроено на persistence.xml, и все в порядке.Когда я тестирую модуль в этом классе, мне нужно использовать другой модуль персистентности с другим набором свойств и параметров конфигурации.Как мне это организовать?Создать еще один <persistence-unit> элемент в persistence.xml?Существует ли для этого наилучшая практика?

Ответы [ 4 ]

8 голосов
/ 05 октября 2010

Я использую то же постоянное имя устройства, но разные persistence.xml файлы (как вы собираетесь автоматизировать тестирование, если вам нужно отредактировать код для включения «режима тестирования»?).

Если вы 'По-прежнему используя Maven, Maven поддерживает собственное тестирование версий конфигурационных файлов:

  • «производство» persistence.xml идет под src/main/resources/META-INF
  • «тест» persistence.xml идетпод src/test/resources/META-INF и используется для тестирования.
2 голосов
/ 05 октября 2010

Я просто создал еще один <persistence-unit> элемент в persistence.xml.

0 голосов
/ 13 сентября 2015

У меня была похожая проблема, и я хочу предложить другой подход.Я хотел запустить test prod, но я не использую два файла persistence.xml или модификации кода.У меня просто есть один модуль персистентности, но разные среды выполнения (standalone.xml, Wildfly).Допустим, что я хочу работать с моей базой данных разработки, я запускаю Wildfly с тестовой средой выполнения.Когда я хочу имитировать его как реального пользователя, я запускаю среду prod.Единственная разница заключается в записи источника данных в standalone.xml.Дескриптор всегда один и тот же (например, myappDS, поэтому объявление модуля персистентности в persistence.xml также всегда одинаково), но на тестовом сервере вход источника данных указывает на мою тестовую базу данных, а в prod указывает источник данных на мою базу данных prod.

0 голосов
/ 05 октября 2010

Вы можете создать второй блок персистентности в вашей конфигурации, но это не обязательно означает, что вы должны . Несколько ПУ, конечно, совершенно правильные и правильные, но я бы не стал смешивать их, когда они специально предназначены для разных сред, например Производство против теста.

В вашем случае, у меня было бы два файла конфигурации постоянства, и я бы выбрал Ant / Maven / build tool, если нужно, скопировать / переименовать правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...