2011-10-17 19 views
6

Ho una suite di test JUnit 4 che contiene un numero di classi di test nell'ordine in cui devono essere eseguite (i nostri test di integrazione devono essere eseguiti in un certo ordine).Esecuzione di una suite di test JUnit4 in Maven utilizzando il plug-in maven-failsafe

Se utilizzo il plugin maven-failsafe senza alcuna configurazione, verrà eseguito il test ma non nell'ordine corretto. Tuttavia, se imposto il plug-in per eseguire la suite di test, non vengono eseguiti test.

È possibile eseguire una suite di test utilizzando il plug-in failsafe? se è così, dove mi sono sbagliato?

Il codice è qui sotto:

@RunWith(Suite.class) 
@SuiteClasses({ 
    TestCase1.class, 
    TestCase2.class, 
     ... 
    TestCaseN.class, 
}) 
public class IntegrationSuite { 
    //Do Nothing. 
} 

e da pom.xml:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <includes> 
      <include>IntegrationSuite.java</include> 
     </includes> 
    </configuration> 
    <executions> 
     <execution> 
      <id>integration-test</id> 
      <goals> 
       <goal>integration-test</goal> 
      </goals> 
    </execution> 
    <execution> 
     <id>verify</id> 
     <goals> 
      <goal>verify</goal> 
     </goals> 
    </execution> 
</executions> 
</plugin> 

Grazie :)

risposta

10

plug-fail-safe supporta runOrder (click) parametro a partire dalla versione 2.7 (abbastanza recente). Non ci sono molte opzioni, non è possibile specificare l'ordine in modo esplicito, ma è possibile impostarlo su "alfabetico" e rinominare le classi di test per riflettere l'ordine di esecuzione.

Posso anche dire che il fatto che il test dipendano l'uno dall'altro è (test) codice odore; non è buono, perché è un percorso breve per lo sviluppo di un insieme non verificabile di test e l'abbandono finalmente quando la sua complessità schizza dietro la comprensione umana. Inoltre, potrebbe non riuscire ad esporre bug, poiché è il risultato di un percorso di esecuzione scelto.

BTW, io preferisco includere esami di questo tipo, con un doppio asterisco:

<includes> 
    <include>**/IntegrationSuite.java</include> 
</includes> 
+0

Grazie per la risposta! I test stessi non si affidano a vicenda per l'esecuzione, tuttavia il loro ordine di esecuzione è stato determinato da un documento scritto che dettaglia i test ... non è una mia decisione, ma devo ancora attuarlo !! –

+0

@HeavyMetalKid Ora che ci penso, in base a come Surefire/Failsafe trova i casi di test, le suite probabilmente non sono supportate. Non posso dare una prova difficile, però. – MaDa

+0

Da quello che ho letto cercando una risposta a questo penso che potresti avere ragione. Proverò invece il tuo runOrder + l'idea di denominazione alfabetica. Grazie –

0

Maven-infallibile-plugin può essere utilizzato anche come sottostante Codice:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.12.4</version> 
<configuration> 
<includes> 
<include>**/IntegrationSuite.java</include> 
</includes> 
</configuration> 
</plugin>  
Problemi correlati