2010-11-29 8 views
5

I 2 Maven-Projekte haben, eine für die Quellen: ProjSource, die eine Klasse: Class-A .. und ein anderes: ProjTest eine Testklasse für Class- enthält Ein Name Klasse-A-Test. Ich möchte, dass meine Testklasse ausgeführt wird, wenn ich ein mvn: install auf ProjSource aufruft.Invoke testen Klassen aus einem anderen Maven Projekt

Was ist der einfachste Weg, um so etwas zu tun? Beachten Sie, dass meine Erfahrung mit Komponententests sehr grundlegend ist. Ich weiß nicht, wie man Maven sagt, dass Klasse-A-Test entworfen ist, um Klasse-A zu testen.

Ich folgte den beschriebenen Schritten mit dem Maven-Jar -Plugin mit Test-jar Tor here ist und die resultierende * ** * ** * -tests.jar als Abhängigkeit für ProjSource mit:

<type>test-jar</type> 
<scope>test</scope> 

aber wenn ich Führe einen mvn: install, die Ausgabe aus sagt, dass: "Es gibt keine Tests zu laufen". Habe ich etwas verpasst?

Jede Hilfe ist sehr spürbar, und vielen Dank im Voraus!

Grüße,

Antwort

3
  1. tun es nicht, dass die Art und Weise tun. Der richtige Weg, dies zu tun, ist, Standardquellen unter src/main/java zu haben und Quellen unter src/test/java zu testen. Standardmäßig werden dem resultierenden JAR Standardquellen hinzugefügt, während Tests im Testquellverzeichnis automatisch ausgeführt werden. Dies ist ein bewährtes Verhalten, warum ändern Sie es? Wenn Sie ein Test-Jar benötigen/benötigen, rufen Sie jar: test-jar in der Datei pom.xml dieses Projekts auf und verwenden Sie das buildhelper-Plugin für die Bereitstellung auf attach the resulting artifact. Auf diese Weise können Sie das Standardprojektlayout behalten und trotzdem ein Test-Jar haben.

  2. Wenn Sie darauf bestehen, es tun, müssten Sie es anders herum tun. Das Testprojekt müsste vom Hauptprojekt abhängig sein (Sie können nicht testen, was Sie nicht wissen). Ich würde vorschlagen, einfach den Testcode in src/test/java im Testprojekt zu setzen, dann kann Maven's Magie den Standardweg arbeiten. Auch hier Fetttext von oben einfügen.

Aber der Grund, warum der Maven-Lebenszyklus definiert wurde, wie es war, ist, dass nicht bestandene Tests sollen die Build zum Scheitern verurteilt. Es macht keinen Sinn, eine Bibliothek zu bauen, die nicht das tut, was sie tun soll.

+0

Danke Floyd, ich habe deinen Vorschlag ausprobiert, aber leider hat das nicht funktioniert .. Jetzt versuche ich einen Weg zu finden, Maven zu sagen, dass meine Testklassen in einer JAR-Datei gepackt sind, und nach diesem Glas zu suchen Ausführen der "Testphase". ist nahe an dem, was ich suche, aber dieses Tag akzeptiert nur einen Ordner als Quelle, nicht als JAR .. Bitte beachten Sie, dass dies die Anforderungen meines Unternehmens sind, alle Tests sind in einem Glas verpackt (vor dem Start maven ...) –

+0

ein Testglas? Wenn das der Fall ist, sehen Sie sich meine aktualisierte Antwort an. –

Verwandte Themen