2015-05-11 10 views
7

Ich mache mein erstes Java EE Projekt und möchte einen Test durchführen. Ich habe gesucht und festgestellt, dass es seit EJB 3.1 die Möglichkeit gibt, einen eingebetteten EJB-Container zum Testen der Business-Schicht zu verwenden. Ich verwende WildFly, aber ich habe nicht gefunden, wie ich den eingebetteten Container konfiguriere.WildFly: Wie EJB mit eingebetteten Container zu testen?

Also, wie konfiguriert man den eingebetteten Container richtig und testet EJBs 3.1+ mit WildFly?

Ich freue mich über jede Hilfe!

+1

Suchen Sie nach [Arquillian] (http://www.arquillian.org), dem Integration Testing Framework für Wildfly? Oder suchen Sie nach dem, was in der Stackoverflow-Frage zu [Einbetten des EJB-Containers in Komponententests] (http://stackoverflow.com/questions/24310912/arquillian-vs-ejb-embeddable-container) diskutiert wurde? – fxnn

+0

Hallo @fxnn, das wäre die zweite Option, ich habe viele Beiträge mit dem gleichen Code gefunden, aber es scheint, dass es eine andere Einstellung abhängig von der AS, die Sie verwenden, in meinem Fall ist es Wildfly. – codenoob

+0

Sie können das [wildfly-maven-plugin] (https://docs.jboss.org/wildfly/plugins/maven/latest/) verwenden, um den Server während der Tests zu starten und ihn nach Abschluss der Tests herunterzufahren. –

Antwort

5

Sie müssen Framework Arquillian von jboss selbst http://www.mastertheboss.com/jboss-frameworks/arquillian/arquillian-tutorial verwenden.

Was dieses Framework tut, ist dies: im Hintergrund wird die Instanz von jboss erstellt. Alles wird dort bereitgestellt, sodass Sie dann Ihre EJBs oder Servlets auf diesem "Hintergrund" -Container ausführen können.

Es ist nicht einfach, es zu konfigurieren, also würde ich Ihnen empfehlen, mit Jboss Tools für Eclipse zu beginnen. Code sieht dann wie folgt aus:

@Deployment 
public static Archive<?> createTestArchive() { 
    return ShrinkWrap.create(WebArchive.class, "test-demo.war") 
      .addAsResource("META-INF/persistence.xml") 
      .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml"); 
} 

ich nicht diesen Ansatz bevorzugen, es ist wirklich ein separater Einsatz, müssen Sie vollständig die Struktur von WAR und EJB-Pakete verstehen und alle anderen Details.

Es ist wirklich besser, dass Ihre EJBs, JPAs und Servlet-Beans nur leichte Wrapper um normale Java-Klassen (POJOs) sind, wo die wahre Logik liegt. Dann können Sie diese Tests mit einfachen Unit-Tests durchführen.