Zapoznaj się z funkcją alternate descriptors, która ma na celu to, co próbujesz zrobić.
Spróbuj Setup:
src/main/resources/META-INF/persistence.xml
src/main/resources/META-INF/test.persistence.xml
Następnie można skonstruować OpenEJB wolą plik test.persistence.xml
przez ustawienie systemu openejb.altdd.prefix
lub mienia InitialContext do test
A możliwe inne rozwiązanie override the persistence unit properties in the test. Dzięki takiemu podejściu można uniknąć potrzeby drugiego, co może być miłe, ponieważ utrzymanie dwóch może być uciążliwe.
Można użyć podejścia Maven, ale należy pamiętać, że według specyfikacji dostawca utrwalania będzie wyglądał (aka skan) dla ziaren @Entity
w dokładnym słoiku lub katalogu, w którym znajduje się persistence.xml
. Więc być uwrażliwione że w Maven są to dwie różne lokalizacje:
target/classes
target/test-classes
EDIT Więcej szczegółów na temat możliwości nadrzędnych
można przesłonić właściwości w Twoim przetestuj instalację za pomocą właściwości systemowych lub początkowych właściwości kontekstu (dotyczy to plików jndi.properties).Format jest:
<unit-name>.<property>=<value>
Tak na przykład z następującym persistence.xml
:
<persistence>
<persistence-unit name="movie-unit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>movieDatabase</jta-data-source>
<non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="hibernate.max_fetch_depth" value="3"/>
</properties>
</persistence-unit>
</persistence>
Można przesłanianie i dodać właściwości jednostek wytrwałość w przypadku testowego. Obecnie nie ma urządzeń do ich usuwania (jeśli masz taką potrzebę, daj nam znać - do tej pory tak naprawdę nie wyszło).
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory");
p.put("movie-unit.hibernate.hbm2ddl.auto", "update");
p.put("movie-unit.hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
context = new InitialContext(p);
Lub alternatywnie poprzez jndi.properties
pliku
java.naming.factory.initial=org.apache.openejb.client.LocalInitialContextFactory
movie-unit.hibernate.hbm2ddl.auto = update
movie-unit.hibernate.dialect = org.hibernate.dialect.HSQLDialect
możliwy duplikat [Jak skonfigurować WZP do testowania w Maven] (http://stackoverflow.com/questions/385532/how-to-configure-jpa-for-testing-in-maven) –
Hmm , czy mógłbyś dodać więcej szczegółów na temat części OpenEJB (może link?). Ponieważ działa to z "podstawowymi" testami JUnit. –
Czy używasz [Wykrywania aplikacji za pośrednictwem ścieżki klasy] (http://openejb.apache.org/3.0/application-discovery-via-the-classpath.html)? –