2013-07-25 20 views
12

Nella pagina Maven and Integration Testing si dice:In Maven è possibile mantenere i test di integrazione in una cartella separata dai test unitari?

The Rumor futuro ha che una futura versione di Maven sosterrà qualcosa di simile src/it/java nella fase di integrazione-test, oltre a src/test/java nella fase di test.

ma quello era di nuovo in 2011-12-11. Questo è già successo?

In this answer-"Run maven test not in default src/test/java folder" si menziona l'impostazione della <testSourceDirectory>, è il loro modo di fare un po 'di questo solo per test di integrazione (es. La integration-test fase)?

Sto cercando di utilizzare lo Maven FailSafe plugin ed evitare di rinominare un gruppo di test di integrazione o di utilizzare il JUnit ancora sperimentale @Categories.

risposta

12

È possibile inserire l'It'ss nella cartella diversa in questo modo:

. 
|-- pom.xml 
`-- src 
    |-- it 
    | `-- java 
    |  `-- com 
    |   `-- soebes 
    |    `-- maui 
    |     `-- it 
    |      `-- BitMaskIT.java 
    |-- main 
    | `-- java 
    |  `-- com 
    |   `-- soebes 
    |    `-- maui 
    |     `-- it 
    |      `-- BitMask.java 
    `-- test 
     `-- java 
      `-- com 
       `-- soebes 
        `-- maui 
         `-- it 
          `-- BitMaskTest.java 

Di seguito è necessaria per rendere poi le cartelle note al compilatore ecc

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.5</version> 
    <executions> 
    <execution> 
     <id>add-test-source</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>add-test-source</goal> 
     </goals> 
     <configuration> 
     <sources> 
      <source>src/it/java</source> 
     </sources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

è necessario il seguente alla Realmente esegue gli IT:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.15</version> 
    <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> 

Ciò significa che è possibile avere l'integrazione all'interno dello stesso modulo che ha lo svantaggio che l'esecuzione dei test di integrazione utilizza le stesse risorse dei test unitari. Una soluzione migliore sarebbe quella di creare un modulo maven separato in cui inserire i test di integrazione nella solita cartella src/test/java e configurare solo il plugin maven-failsafe.

+0

Bello! Giusto per essere chiari entrambi i test e sarà scansionato per unit test e test di integrazione quindi fondamentalmente dipende ancora dal nome del file per distinguere tra i due giusto? – ArtB

+0

Per il primo scenario corretto. Ma il migliore è avere un modulo diverso in cui è possibile modificare la convenzione di denominazione. Non lo consiglierei. – khmarbaise

+0

Perché il plug-in non funzionante funziona durante ' verifica' invece di '' integrazione test-? Sembra strano che il fail-safe funzioni dopo " test post-integrazione"? –