wake-up-neo.net

Maven alle Tests ausführen lassen, auch wenn einige fehlschlagen

Ich habe ein Projekt mit mehreren Modulen. Wenn alle Tests bestanden sind, führt Maven Test sie alle aus.

Wenn die Tests im ersten Modul fehlschlagen, fährt maven nicht mit dem nächsten Projekt fort. Ich habe testFailureIgnore in den Einstellungen von Surefire auf true gesetzt, aber es hilft nicht.

Wie bringe ich Maven dazu, alle Tests auszuführen?

224
ripper234

Ich habe gerade den "-fae" -Parameter gefunden, der Maven veranlasst, alle Tests auszuführen und nicht bei einem Fehler anzuhalten.

91
ripper234

Aus der Dokumentation:

-fae, --fail-at-endVersagen Sie den Build erst danach; lassen Sie alle nicht betroffenen Builds fortfahren

-fn, --fail-neverVersagen Sie NIEMALS den Build, unabhängig vom Projektergebnis

Wenn Sie also ein Modul testen, sind Sie mit -fae Sicher.

Andernfalls sollten Sie bei mehreren Modulen und wenn Sie möchten, dass alle getestet werden (auch diejenigen, die vom fehlgeschlagenen Testmodul abhängen), mvn clean install -fn Ausführen.
-fae Fährt mit dem Modul fort, dessen Test fehlgeschlagen ist (führt alle anderen Tests aus), alle davon abhängigen Module werden jedoch übersprungen.

318
despot

Können Sie mit surefire 2.6 testen und surefire entweder mit testFailureIgnore=true Konfigurieren? Oder in der Befehlszeile:

mvn install -Dmaven.test.failure.ignore=true
74
Pascal Thivent

Versuchen Sie, die folgende Konfiguration für das todsichere Plug-in in Ihrer pom.xml von Root-Projekt hinzuzufügen:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
29
nybon

Eine schnelle Antwort:

mvn -fn test

Funktioniert mit verschachtelten Projektbuilds.

13
rustyx