2012-08-13 16 views
7

ho definito la seguente configurazione nel mio pom per infallibile con TestNG:Che cosa significa il "default-test" riposare per nel plugin Maven-infallibile

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12</version> 
      <configuration> 
       <skipTests>${skip-all-tests}</skipTests> 
      </configuration> 
      <executions> 
       <execution> 
        <id>unit-tests</id> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <skip>${skip-unit-tests}</skip> 
         <groups>unit</groups> 

         <excludedGroups>integration</excludedGroups> 
        </configuration> 
       </execution> 
       <execution> 
        <id>integration-tests</id> 
        <phase>integration-test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <skip>${skip-integration-tests}</skip> 
         <groups>integration</groups> 
         <excludedGroups>unit</excludedGroups> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Ma sembra che i due esecuzioni sono sempre preceduti da un'esecuzione di "test di default" che sembra eseguire ogni metodo annotato @test (almeno credo).

--- maven-surefire-plugin:2.12:test (default-test) @ my-project 

Ad esempio, in esecuzione "mvn test" sul progetto, vengono eseguite due esecuzioni di test. Il "test predefinito" e il "test unitario".

Qualcuno potrebbe spiegarmi un po 'di più? Può essere disabilitato o controllato (configurato cosa è testato e cosa no)?

+0

Dai un'occhiata al tuo pom risultante via mvn help: efficace-pom. Inoltre, la cosa migliore per definire tale cosa è inserirla in pluginManagement e si dovrebbero eseguire i test di integrazione di Maven-failsafe-plugin e NON tramite maven-surefire-plugin. – khmarbaise

+0

Grazie, per me è già chiaro molto! Se metti il ​​tuo commento in un modulo di risposta ti assegnerò i crediti. –

risposta

15

Le persone volevano avere un modo per ignorare le esecuzioni predefinite predefinite dei plugin all'interno di Maven.

Maven 3 (o potrebbe essere stato introdotto già nella versione 2.1.0 o 2.2.0) risolto questo definendo un id di esecuzione predefinito per ogni esecuzione di plugin aggiunto al pom efficace dal ciclo di vita del packaging.

Il nome di questo ID implicito è sempre default-_____ Non riesco a ricordare la regola esatta per cui è stato generato.

È quindi possibile eseguire l'override delle esecuzioni iniettate della confezione definendo un'esecuzione corrispondente.

Per risolvere il vostro caso avrei neanche cambiare <id>unit-tests</id>-<id>default-test</id> o aggiungere

  <execution> 
       <id>default-test</id> 
       <configuration> 
        <skip>true</skip> 
       </configuration> 
      </execution> 

né avrà lo stesso effetto, anche se il <id>unit-tests</id>-<id>default-test</id> soluzione sarà leggermente più performante come avete solo bisogno di invocare due esecuzioni di sicuro

L'altra cosa che vorrei sottolineare è che si sarebbe probabilmente essere meglio utilizzare Maven-fail-safe-plugin per eseguire i vostri test di integrazione, come ad un certo punto nel tempo si consiglia di fare alcune cose pre test di integrazione & postale e fail-safe è progettato per tale caso d'uso (anche se dovrebbe essere banale passare più in basso)