OpenJPA, Джерси, JUNIT: Использование другого настойчивого устройства для моих модульных тестов?
-
28-09-2019 - |
Вопрос
Я создаю приложение с помощью 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, другой во время теста, и это.