Я создаю приложение с помощью OpenJPA 2.0.0, Джерси 1.3, и JUnit 4.8.1.
Я настроил его так, у меня есть две различных единицы персистентности, определенные в моем persistence.xml: "значение по умолчанию" и "unittest". Значение по умолчанию настраивается для соединения с экземпляром Oracle, в то время как unittest настраивается для соединения с локальным файлом встроенной базы данных H2DB. Я делаю это так, чтобы я всегда запустил свои модульные тесты с чистой базы данных, которая имеет определенные известные данные в нем, которые могут быть перезаписаны между каждым выполнением модульных тестов.
Проблема состоит в том, что теперь я хочу использовать Среду тестирования Джерси для тестирования моих фактических веб-сервисов, а не просто нижних уровней программы. Мои корневые классы ресурса не загружают unittest единицу персистентности, они всегда загружают значение по умолчанию.
Таким образом, то, что я, вероятно, должен сделать, должно ввести в корневые классы ресурса, какая единица персистентности должна использоваться, чтобы инстанцировать EntityManager и затем иметь некоторый способ ввести unittest, когда я запускаю свои тесты, но ввожу значение по умолчанию иначе. Но я не могу думать ни о каком хорошем способе сделать это.
Я являюсь совершенно новым к Java разработка EE, которая могла бы быть очевидной.
Какая-либо справка?
Я думаю, что должна быть возможность создать второй файл persistence.xml в src/test/resources/META-INF.
Если я правильно все понимаю, maven поместит целевые/тестовые классы в путь к классам перед целевыми/классами, так что в модульном тесте будет прочитан только ваш тестовый файл persistence.xml. Таким образом, вы можете использовать то же имя единицы сохраняемости, но с другой конфигурацией.
src/main/resources/
META-INF
persistence.xml <-- for actual application
src/test/resources/
META-INF
persistence.xml <-- for unit tests
РЕДАКТИРОВАТЬ:
ой, меня обманули, заставив поверить, что вы использовали maven другим ответом. Если нет, то забудьте, что я сказал...
Используете ли вы Maven? Если да, то есть трюк, который позволяет вам "читать" значение POM в вашем классе Java. Это было очень полезно для меня, вам просто нужно было установить ваше имя Persistence Unit Name в вашем POM, другое имя во время тестирования, и все.