Frage Rufen Sie Testklassen von einem anderen Maven-Projekt auf


Ich habe 2 Maven-Projekte, eins für die Quellen: ProjSourcemit einer Klasse: Klasse a.. und noch einer: ProjTest enthält eine Testklasse für Klasse-A namens Klasse-A-Test . Ich möchte, dass meine Testklasse ausgeführt wird, wenn ich eine mvn: install auf ProjSource aufruft.

Was ist der einfachste Weg, um so etwas zu tun? Beachten Sie, dass meine Erfahrung mit Komponententests sehr einfach ist. Ich kann Maven nicht sagen, dass Class-A-Test zum Testen von Class-A entwickelt wurde.

Ich habe die beschriebenen Schritte mit dem maven-jar-plugin mit test-jar Goal durchgeführt Hier und das Ergebnis definieren *******-tests.jar als Abhängigkeit für ProjSource mit:

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

Aber wenn ich eine mvn: install starte, sagt die Ausgabe: "Es gibt keine Tests zu laufen". Habe ich etwas verpasst?

Jede Hilfe ist sehr bemerkenswert, und vielen Dank im Voraus!

Grüße,


5
2017-11-29 15:21


Ursprung


Antworten:


  1. mach es nicht so. Der richtige Weg, dies zu tun, ist, Standardquellen zu haben src/main/java und Testquellen unter src/test/java. 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 pom.xml dieses Projekts auf und verwenden Sie das buildhelper-Plugin für Befestigen Sie das resultierende Artefakt für die Bereitstellung. Auf diese Weise können Sie das Standardprojektlayout behalten und trotzdem ein Test-Jar haben.

  2. Wenn du darauf bestehst, musst du es andersherum machen. 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 einzugeben src/test/java im testprojekt kann maven's magie dann wie gewohnt funktionieren. Fügen Sie hier auch fett von oben ein.

Der Grund, warum der Maven-Lebenszyklus so definiert wurde, wie er war, besteht darin, dass fehlgeschlagene Tests den Build nicht erfüllen sollten. Es macht keinen Sinn, eine Bibliothek zu bauen, die nicht das tut, was sie tun soll.


3
2017-11-29 15:54