OpenJPA, Джерси, JUnit: Используя другую единицу персистентности для моих модульных тестов?

Я создаю приложение с помощью OpenJPA 2.0.0, Джерси 1.3, и JUnit 4.8.1.

Я настроил его так, у меня есть две различных единицы персистентности, определенные в моем persistence.xml: "значение по умолчанию" и "unittest". Значение по умолчанию настраивается для соединения с экземпляром Oracle, в то время как unittest настраивается для соединения с локальным файлом встроенной базы данных H2DB. Я делаю это так, чтобы я всегда запустил свои модульные тесты с чистой базы данных, которая имеет определенные известные данные в нем, которые могут быть перезаписаны между каждым выполнением модульных тестов.

Проблема состоит в том, что теперь я хочу использовать Среду тестирования Джерси для тестирования моих фактических веб-сервисов, а не просто нижних уровней программы. Мои корневые классы ресурса не загружают unittest единицу персистентности, они всегда загружают значение по умолчанию.

Таким образом, то, что я, вероятно, должен сделать, должно ввести в корневые классы ресурса, какая единица персистентности должна использоваться, чтобы инстанцировать EntityManager и затем иметь некоторый способ ввести unittest, когда я запускаю свои тесты, но ввожу значение по умолчанию иначе. Но я не могу думать ни о каком хорошем способе сделать это.

Я являюсь совершенно новым к Java разработка EE, которая могла бы быть очевидной.

Какая-либо справка?

1
задан BishopRook 12 August 2010 в 16:35
поделиться

2 ответа

Я думаю, что должна быть возможность создать второй файл 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 другим ответом. Если нет, то забудьте, что я сказал...

2
ответ дан 2 September 2019 в 22:12
поделиться

Используете ли вы Maven? Если да, то есть трюк, который позволяет вам "читать" значение POM в вашем классе Java. Это было очень полезно для меня, вам просто нужно было установить ваше имя Persistence Unit Name в вашем POM, другое имя во время тестирования, и все.

Переменные Maven в контексте java

0
ответ дан 2 September 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: