Вот то, что я пытаюсь сделать. Я использую персистентность JPA в веб-приложении, но у меня есть ряд модульных тестов, которые я хочу выполнить за пределами контейнера.
У меня есть свое основное устройство persistence.xml
в META_INF
папка моего главного приложения и это работает отлично в контейнере (Glassfish).
Я поместил секунду persistence.xml
в META-INF
папка моего test-classes
каталог. Это содержит отдельную единицу персистентности, которую я хочу использовать для теста только. В затмении я поместил эту папку выше в путь к классу, чем папка по умолчанию, и это, кажется, работает.
Теперь, когда я выполняю сборку знатока непосредственно из командной строки, и она пытается выполнить модульные тесты, persistence.xml
переопределение проигнорировано. Я вижу переопределение в META-INF
папка знатока сгенерирована test-classes
каталог и я ожидали, что тесты знатока будут использовать этот файл, но это не. Работают мои тестовые переопределения конфигурации Spring, достигнутые подобным способом.
Я смущен в к ли persistence.xml
расположен через путь к классу. Если бы это было, то мое переопределение должно работать как пружинное переопределение, так как знаток, безошибочный плагин объясняет" [Тестовый каталог класса], будет включен вначале тестовый путь к классу".
Разве я неправильно ожидал как persistence.xml
файл расположен?
Я мог (и иметь), создают вторую единицу персистентности в производстве persistence.xml
файл, но это чувствует себя грязным для размещения тестовой конфигурации в этот производственный файл. Любые другие идеи о том, как достигнуть моей цели, приветствуются.
persistence.xml
загружается из classpath; в прошлом я делал именно то, что вы описали.
Скорее всего, это проблема с maven. Вы можете отладить classpath maven, запустив его с опцией -X
.
Неясно, где вы разместили «второй» persistence.xml
(тестовая версия), но вам следует поместить его в SRC / тест / ресурсы / META-INF
. Ресурсы тестирования автоматически добавляются в путь к классам, установленный Maven для ваших модульных тестов, и имеют приоритет над ресурсами, размещенными в src / main / resources
.