Far eseguire a Maven tutti i test, anche quando alcuni falliscono


243

Ho un progetto con diversi moduli. Quando tutti i test passano, il test Maven li esegue tutti.

Quando i test falliscono nel primo modulo, Maven non continuerà al prossimo progetto. Ho testFailureIgnore impostato su true nelle impostazioni di Surefire, ma non aiuta.

Come faccio a far eseguire a Mven tutti i test?


Quale versione del plugin maven-surefire?
Pascal Thivent,

Risposte:


359

Dalla documentazione di Maven Embedder :

-fae, --fail-at-end Fallisce la compilazione solo dopo; consentire a tutte le build senza impatto di continuare

-fn, --fail-never MAI fallire la compilazione, indipendentemente dal risultato del progetto

Quindi se stai testando un modulo di quello che stai usando in sicurezza -fae.

Altrimenti, se si dispone di più moduli e se si desidera che siano testati tutti (anche quelli che dipendono dal modulo dei test non riusciti), è necessario eseguire mvn clean install -fn.
-faecontinuerà con il modulo che ha un test fallito (eseguirà tutti gli altri test), ma tutti i moduli che dipendono da esso verranno saltati.


1
inoltre potresti aggiungere -e per il cmd per fornire alcune informazioni di errore.
despota il

11
Ho appena testato l'opzione --fail-never. Maven non fallirà la compilazione anche se ci sono errori di compilazione. Se uso questa opzione su Jenkins, la build sembra avere successo anche se ha molti errori di compilazione. Preferisco -Dmaven.test.failure.ignore=truein questo caso e lascio che Jenkins analizzi i rapporti infallibili.
fuemf5,

@wlnirvana Ho modificato il post ora con questo link (quindi sentiti libero di eliminare il tuo commento ...)
Steve Chambers

93

Ho appena trovato il parametro "-fae", che fa eseguire a Maven tutti i test e non si interrompe in caso di errore.


3
Purtroppo, questo parametro non funziona quando lo passo a TeamCity.
ripper234,

4
In un progetto multi-modulo, i moduli che dipendono dal modulo che ha fallito i test verranno saltati. Utilizzare invece -fn.
hipokito

2
@ ripper234 hai trovato il modo di farlo funzionare su TeamCity?
Jeredriq Demas,

86

Puoi testare con surefire 2.6 e configurare surefire con testFailureIgnore=true. O dalla riga di comando:

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

16
IIRC ha l'effetto di non fallire l'intera build, piuttosto che eseguire tutti i test e fallire alla fine.
Ondra Žižka,

1
Questa è l'unica opzione che ha funzionato per me ... L'opzione "-fae" non ha fatto nulla sui fallimenti del test
Yoi

38

Prova ad aggiungere la seguente configurazione per il plugin surefire nel tuo pom.xml del progetto root :

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

17

Una risposta veloce:

mvn -fn test

Funziona con build di progetti nidificati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.