2012-05-08 12 views
17

Ho un jar nel mio repository di Maven che contiene i test di junit, che dovrebbero essere eseguiti in diversi progetti, perché è in grado di ispezionare il progetto e testare alcune funzionalità di esso. Unfunzionalmente infallibile non raccoglie i test contenuti in un barattolo, come questo Feature Request shows.Esegui test JUnit contenuti nel contenitore delle dipendenze usando Maven Surefire

Nella richiesta di funzione si propone di disimballare il barattolo per essere poi eseguito da surefire.

Ho estratto con successo il jar utilizzando il plugin maven-dependency-ma i test contenuti non vengono comunque eseguiti. Questo è come ho configurato il Maven dipendenza-plugin per decomprimere mio vaso:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>unpack</id> 
      <phase>process-test-classes</phase> 
      <goals> 
       <goal>unpack</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>de.mwx.test</groupId> 
         <artifactId>selenium-test-base</artifactId> 
         <version>0.1</version> 
         <overWrite>true</overWrite> 
          <outputDirectory> 
           ${project.build.directory}/classes 
          </outputDirectory> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Qualsiasi aiuto sarebbe appriciated.

+1

Perché le prove in un altro vaso? Sono test per il tuo progetto, o un altro? Se un altro, perché li stai eseguendo? Se per la tua app, perché non sono nel tuo progetto? –

+0

L'altro jar è in realtà un framework di test che opera sul progetto corrente ed esegue attività varie. Mi sembrava il modo più modulare: ma non era l'uso previsto per surefix, immagino. – devsnd

+1

Ma i progetti di esperti già definiscono uno standard per i test di un progetto. E IMO non ha senso rendere un progetto dipendente dai suoi test - semmai, i test dipenderebbero dal modulo sotto test, poiché i test usano il modulo, ma non viceversa. –

risposta

28

C'è un nuovo modo di eseguire un test in un altro barattolo. dalla versione 2.15 di maven-surefire-plugin puoi dire a Maven di scansionare i tuoi barattoli di prova per test ed eseguirli. Non è necessario estrarre il vaso di prova. Basta aggiungere una dipendenza al vostro vaso di test e:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.15</version> 
     <configuration> 
      <dependenciesToScan> 
       <dependency>test.jar.group:test.jar.artifact.id</dependency> 
      </dependenciesToScan> 
     </configuration> 
    </plugin> 

preso questa roba da https://gist.github.com/aslakknutsen/4520226 E https://issues.apache.org/jira/browse/SUREFIRE-569

+0

Ha funzionato perfettamente, grazie per questa aggiunta. –

+1

Ha funzionato come un fascino! Anche quando si specifica una dipendenza dal vaso di prova (con i test ) – mac

1

Come descritto nel problema, è necessario disporre di una Suite che è contenuta nel progetto che NON si trova nel contenitore di prova.

+0

Sì, questo è il progetto di cui sto parlando. Aggiornerò la mia domanda per chiarire questo punto. – devsnd

+1

Suggerirei di utilizzare la directory test-classes anziché la cartella classes come outputDirectory. – khmarbaise

+0

SÌ! Era così. Grazie. – devsnd

2

(Questo è solo riaffermare ciò che è in un commento di cui sopra da khmarbaise, ma dal momento che non è stato chiarito, credo che valga la pena ribadire):

Utilizzare la directory test-classi anziché nella cartella classi OutputDirectory :