OpenJPA, Джерси, JUnit: Использовать другую единицу персистентности для моих юнит-тестов? - PullRequest
1 голос
/ 12 августа 2010

Я создаю приложение, используя OpenJPA 2.0.0, Jersey 1.3 и JUnit 4.8.1.

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

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

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

Я новичок в разработке Java EE, что может быть очевидно.

Любая помощь?

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

Я думаю, что можно создать второй файл 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

EDIT:

упс, меня обманули, поверив, что вы использовали maven другим ответом. Если нет, забудь, что я сказал ...

0 голосов
/ 20 августа 2010

Вы используете Maven? Если да, есть хитрость, которая позволяет вам «прочитать» значение POM в вашем классе Java. Для меня это было очень полезно, вам просто нужно было бы указать свое имя единицы измерения персистентности в своем POM, другое во время теста, и все.

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

...