OpenJPA, Джерси, JUNIT: Использование другого настойчивого устройства для моих модульных тестов?

StackOverflow https://stackoverflow.com/questions/3469922

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

Я думаю, что должно быть возможно создать второй настойчивость .xml в SRC / Test / Resources / Meta-Inf.

Если я правильно понимаю вещи, Maven поставит целевые / тестовые классы в классном патке, опережающему целевому / классу, так что в модульном тесте будет прочитан только ваша тестовая персистентность.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. Для меня было очень полезно, вам просто нужно было установить имя своего настойчивого узла в свой POM, другой во время теста, и это.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top