2010-11-13 3 views
182

Ich habe ein Projekt mit mehreren Modulen. Wenn alle Tests bestanden sind, werden sie vom Maven-Test ausgeführt.Making Maven führen alle Tests, auch wenn einige fehlschlagen

Wenn Tests im ersten Modul fehlschlagen, wird Maven nicht mit dem nächsten Projekt fortfahren. Ich habe testFailureIgnore in Surefire Einstellungen auf True gesetzt, aber es hilft nicht.

Wie mache ich Maven laufen alle Tests?

+0

Welche Version der Maven-todsichere-Plugin? –

+0

@Pascal - SureFire 2.5 – ripper234

Antwort

81

Ich habe gerade den Parameter "-fae" gefunden, der bewirkt, dass Maven alle Tests ausführt und bei einem Fehler nicht stoppt.

+2

Leider funktioniert dieser Parameter nicht, wenn ich ihn an TeamCity übergebe. – ripper234

+0

In einem Projekt mit mehreren Modulen werden Module, die von Modulen mit fehlgeschlagenen Tests abhängig sind, übersprungen. Verwenden Sie stattdessen -fn. – hipokito

65

Können Sie mit todsicheren 2.6 testen und entweder todsichere mit testFailureIgnore=true konfigurieren. Oder auf der Kommandozeile:

mvn install -Dmaven.test.failure.ignore=true 
+11

IIRC Dies hat den Effekt, dass der gesamte Build nicht fehlschlägt, anstatt alle Tests auszuführen und am Ende zu versagen. –

+0

Dies ist die einzige Option, die für mich funktionierte ... Die "-fae" -Option tat nichts bei Testfehlern – Yoi

29

Versuchen Sie, die folgende Konfiguration für todsichere Plugin in Ihrem pom.xml von Stammprojekt 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> 
252

Aus der Dokumentation:

-fae, --fail-at-endNur scheitern die Build danach; erlauben alle nicht beaufschlagten

-fn, --fail-neverNIEMALS den Build fehlschlagen, und zwar unabhängig von Projektergebnis

So weiter baut, wenn Sie ein Modul testen, als Sie sicher mit -fae sind.

Andernfalls, wenn Sie mehrere Module haben, und , wenn Sie alle von ihnen getestet werden möchten (auch diejenigen, die von der fehlgeschlagenen Tests Modul abhängen), sollten Sie mvn clean install -fn ausführen.
-fae wird mit dem Modul fortgesetzt, das einen fehlgeschlagenen Test hat (alle anderen Tests werden ausgeführt), aber alle Module, die davon abhängen, werden übersprungen.

+1

Zusätzlich konnten Sie -e für den Cmd hinzufügen, um einige Fehlerinformationen zu liefern. – despot

12

Eine schnelle Antwort:

mvn -fn test 

Arbeiten mit verschachteltem Projekt baut.

-5

Sie können versuchen, das Maven Failsafe-Plugin

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <executions> 
     <execution> 
      <configuration> 
      ........ 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+4

Das [Maven Failsafe Plugin] (https://maven.apache.org/surefire/maven-failsafe-plugin/) ist ein Plugin, das Surefire sehr ähnlich ist, aber für die Ausführung von Integrationstests.Während es bei fehlgeschlagenen Tests weitergehen würde, befindet es sich an einem anderen Punkt im Lebenszyklus. – CoverosGene

Verwandte Themen