GEDOPLAN
Jakarta EE (Java EE)

JUnit,ShrinkWrap und der MavenImporter

Jakarta EE (Java EE)

In einen unserer letzten Beiträge haben wir einen Blick auf ein Basis-Setup für das Testen von Java EE Anwendungen geworfen. Dabei haben wir die zu testende Anwendung als vollständiges WAR deployt und zwar auf Basis eines zuvor laufenden Maven-Builds. Zumindest in Eclipse (mit seinen eigenen Build-Prozess) ist das nicht die optimale Wahl.

Die Möglichkeiten das zu testende Artefakt zu bauen sind Vielfältig, vom einzelnen hinzufügen von Klassen und Packages (Aufwändig, Fehleranfällig) bis hin zum vollständigen Deployment eines WAR-Archivs (Maven Build benötigt) ist alles machbar. Eine Variante die in den aktuelleren Versionen zur Verfügung steht geht noch einen Schritt weiter: auf Basis des der pom.xml die unser Projekt ja hinreichend beschreibt ist ShrinkWrap damit in der Lage unser Archiv selbständig zusammen zu bauen ohne das explizit ein Maven-Build im Vorfeld laufen muss:

pom.xml

<dependency>
    <groupId>org.jboss.shrinkwrap.resolver</groupId>
    <artifactId>shrinkwrap-resolver-impl-maven-archive</artifactId>
    <scope>test</scope>
</dependency>

Basis-Test-Klasse

@Deployment()
public static WebArchive createDeployment() {
    File pomFile = new File("pom.xml");
    WebArchive deployment = ShrinkWrap.create(MavenImporter.class, UUID.randomUUID().toString() + "_junit-demo-test.war")
            .loadPomFromFile(pomFile)
            .importBuildOutput().as(WebArchive.class);

    deployment
            .addPackage("de.gedoplan.webclients.test")
            .addPackage("de.gedoplan.webclients.testhelper")
            .addPackage("de.gedoplan.webclients.test.dbunit")
            .addAsResource(new File("src/test/resources/dbunit_full.xml"))
            .addAsResource("test-persistence.xml", "META-INF/persistence.xml");

    return deployment;
}

Mit dieser Konfiguration ist es den Eclipse-Benutzer nun auch wieder möglich direkt auf einer Test-Klasse den entsprechenden Test aus zu führen (“Run as” > “Junit Test”) ohne das vorher ein Maven-Build gelaufen ist (NetBeans z.B. würde diesen ohnehin vorher aufrufen).

Neben dem kompletten Laden des Projektes ermöglicht der Importer  es auch nur bestimmte Abhängigkeiten zu laden und diese dem Deployment hinzuzufügen um z.B. kleinere Test-Einheiten zu generieren. Nur eine kleine Einschränkung existiert derzeit noch: das komplette Laden des Projektes wie oben gezeigt wird derzeit für EAR-Projekte nicht unterstützt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!