Frage

Ich baue eine Anwendung mit OpenJPA 2.0.0, Jersey 1.3 und JUnit 4.8.1.

Ich habe es so einrichten, ich zwei verschiedene Persistenzeinheiten in meinem persistence.xml definiert haben: „Unittest“ „default“ und Die Standardeinstellung ist bis zu einer Oracle-Instanz zu verbinden, während Unittest eingerichtet wird, auf eine lokale H2DB eingebetteten Datenbank-Datei zu verbinden. Ich mache das so, dass ich meine Unit-Tests immer mit einem sauberen Datenbank, die bestimmten bekannte Daten enthält, die zwischen jedem Durchlauf der Unit-Tests überschrieben werden können.

Das Problem ist, dass ich jetzt will das Jersey Testing-Framework verwenden, um meinen eigentliche Web Service zu testen, anstatt nur die unteren Schichten des Programms. Meine Root-Ressourcenklassen laden nicht den Unittest Persistenzeinheit, sie immer den Standard laden.

Also, was ich wohl tun müssen, um in die Root-Ressourcenklassen injizieren die Persistenzeinheit sollte die EntityManager zu instanziiert verwendet werden, und dann eine Möglichkeit haben zu injizieren, wenn Unittest Ich bin mit meinem Tests aber inject Standard sonst. Aber ich kann nicht glauben, jede gute Art und Weise, das zu tun.

Ich bin ganz neu in Java EE Entwicklung, die offensichtlich sein könnte.

Jede Hilfe?

War es hilfreich?

Lösung

ich denke, es möglich sein sollte, eine zweite persistence.xml in src / test / resources / META-INF zu erstellen.

Wenn ich die Dinge richtig zu verstehen, Maven werden in dem Classpath setzen Ziel / Test-Klassen vor Ziel / Klassen, so dass in einem Gerät zu testen, wird nur Ihr Test persistence.xml gelesen werden. Auf diese Weise kann die gleichen Persistenzeinheit Namen verwenden kann, aber mit einer anderen Konfiguration.

src/main/resources/
    META-INF
        persistence.xml  <-- for actual application

src/test/resources/
    META-INF
        persistence.xml  <-- for unit tests

EDIT:

oops, ich wurde betrogen zu glauben, Sie durch die andere Antwort maven verwendet. Wenn Sie nicht, sind vergessen, was ich gesagt ...

Andere Tipps

Sind Sie mit Maven? Wenn ja, gibt es einen Trick, die Ihnen zu „lesen“, um einen POM-Wert in Ihrer Java-Klasse ermöglicht. Es war sehr nützlich für mich, Sie würden nur Ihre Persistence Einheit Name in Ihrem POM, einem anderen während des Tests festgelegt haben, und das ist es.

Maven Variablen in Java-Kontext

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top