Вот что я пытаюсь сделать. Я использую постоянство JPA в веб-приложении, но у меня есть набор модульных тестов, которые я хочу запустить за пределами контейнера.Является ли JPA persistence.xml classpath?
У меня есть мой основной persistence.xml
в папке META_INF
моего основного приложения, и он отлично работает в контейнере (Glassfish).
Я разместил второй persistence.xml
в папке META-INF
моего каталога test-classes
. Это содержит отдельный блок сохранения, который я хочу использовать только для тестирования. В eclipse я разместил эту папку выше в пути к классам, чем папка по умолчанию, и, похоже, она работает.
Теперь, когда я запускаю сборку maven непосредственно из командной строки и пытается запустить модульные тесты, переопределение persistence.xml
игнорируется. Я могу увидеть переопределение в папке META-INF
созданного maven каталога test-classes
, и я ожидал, что тесты maven будут использовать этот файл, но это не так. Моя конфигурация конфигурации Spring Spring также работает аналогичным образом.
Я смущен тем, находится ли persistence.xml
через путь к классам. Если бы это было так, мое переопределение должно работать подобно переопределению пружины, поскольку плагин maven surefire explains «[Каталог тестового класса] будет включен в начале путь к тестовому классу».
Я неправильно понял, как находится файл persistence.xml
?
Я мог (и имел) создать второй блок сохранения в файле persistence.xml
, но он чувствует себя грязным, чтобы разместить тестовую конфигурацию в этом рабочем файле. Любые другие идеи о том, как достичь моей цели, приветствуются.
ОК - Спасибо за отзыв. По крайней мере, я знаю, что я не делаю то, что полностью там. – Vinnie
OK - теперь это работает. Прежде чем я назвал каждую единицу персистентности в разных файлах с тем же именем. Я изменил блок непрерывности теста на другое имя. Мне это кажется неправильным, но, возможно, это ограничение, о котором я не знал. – Vinnie
Я пошел и выкопал код, где я это делал раньше, и у меня была другая единица персистентности, определенная для модульных тестов, хотя в моем файле persistence.xml теста был одинаковый (не тестируемый) блок персистентности. Вероятно, это было необязательно. Я думаю, что в модульных тестах используется модуль сохранения теста при создании диспетчера сущностей. –