2016-01-14 9 views
6

Ho un progetto Maven Java in cui ho aggiunto alla pom:Come rendere Eclipse riconoscere le cartelle come "cartelle di codice" quando viene importato un progetto?

<build> 
.... 
    <plugin> 
       <!-- adding second test source directory (just for integration tests) --> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <version>${plugin.build-helper-maven-plugin.version}</version> 
       <executions> 
        <execution> 
         <id>add-integration-test-source</id> 
         <phase>generate-test-sources</phase> 
         <goals> 
          <goal>add-test-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>src/integration-test/java</source> 
          </sources> 
         </configuration> 
        </execution> 
        <execution> 
         <id>add-integration-test-resource</id> 
         <phase>generate-test-resources</phase> 
         <goals> 
          <goal>add-test-resource</goal> 
         </goals> 
         <configuration> 
          <resources> 
           <resource> 
            <directory>src/integration-test/resources</directory> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
</build> 

InteliJ riconosciuto la mia Java e risorse cartelle in integrazione-test come una cartella di codice, ma Eclipse non lo fa. C'è un modo in cui eclipse aggiunge queste cartelle come cartelle di codice quando il progetto viene importato?

+0

Avete installato M2E plug-in? Quindi utilizzare Configura-> Converti in Progetto Maven. Quindi è necessario aggiungere il file sorgente 'src/integration-test/java' al plugin Maven per compilatore. Nel layout di directory predefinito inseriresti il ​​tuo codice di test in 'src/test/java' e funzionerà fuori dalla scatola – Stephan

+0

Sì, src/test funziona. Voglio avere entrambi i test srC/test e src/intergation – JSBach

+0

In genere i test unitari e i test di integrazione si trovano nella stessa cartella sorgente. Il tuo problema è causato dalla separazione di entrambi. Ti suggerisco di non usare il tuo layout di directory con Maven, poiché questo causerà molti problemi e dovrai sempre configurare intorno ad esso. Basta attenersi allo standard. – Stephan

risposta

0

Provare a fare clic destro sul tuo cartella in Project Explorer selezionare Build Path opzione nel menu contestuale e poi fare clic su Use as Source Folder nel menu che appare dopo aver scelto Build Path.

+0

Ok, ma tutti quelli che importano questo progetto dovranno fare lo stesso. Ho pensato che Eclipse sarebbe stata in grado di dedurlo dal pom, proprio come ha fatto InteliJ. È possibile? – JSBach

+0

Eclipse ignora le risorse del test. Per quanto ne so, non è possibile aggirarlo usando Maven, a meno che non lo si aggiunga alle risorse disponibili durante la compilazione e il runtime. – Schaka

+0

Non sono sicuro, ma probabilmente Eclipse non è in grado di riconoscere la cartella denominata 'integration-test'. Se la cartella verrà denominata 'test', Eclipse la utilizzerà automaticamente come cartella di origine. –

0

Suggerisco di non utilizzare il proprio layout di directory con Maven poiché ciò causerà molti problemi e sarà sempre necessario configurarlo. Just stick to the standard.

  • Test di integrazione separati e test di unità non dalle rispettive cartelle di origine, ma dal loro nome.
  • Inserire tutti i test in src/test/java. Non devi configurare nulla a questo punto, questo percorso è preso di default.
  • Test di integrazione chiamata IT*.java e test di unità UT*.java.
  • Possono essere eseguiti separatamente perché maven-surefire-plugin esegue test di unità e prove di integrazione eseguite maven-failsafe-plugin. È possibile definire i percorsi dei nomi dei file per identificare le classi di test.
  • È inoltre possibile creare profili per l'esecuzione solo di UT o solo IT.

    <project> 
    <!-- ... --> 
    <build> 
    <plugins> 
    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.13</version> 
        <configuration> 
        <includes> 
         <include>**/UT*.java</include> 
        </includes> 
        <excludes> 
         <exclude>**/IT*.java</exclude> 
        </excludes> 
        </configuration> 
    </plugin> 
    
    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <version>2.18</version> 
        <configuration> 
        <includes> 
         <include>**/IT*.java</include> 
        </includes> 
        </configuration> 
    
        <executions> 
        <execution> 
         <id>failsafe-integration-tests</id> 
         <phase>integration-test</phase> 
         <goals> 
         <goal>integration-test</goal> 
         </goals> 
        </execution> 
        </executions> 
    </plugin> 
    

Ulteriori approfondimenti: http://tomaszdziurko.pl/2013/01/running-unit-tests-integration-tests-separately-maven-testng/

C'è anche un interessante articolo su l'uso corretto di test di integrazione qui: http://zeroturnaround.com/rebellabs/the-correct-way-to-use-integration-tests-in-your-build-process/

+0

Ok, sembra interessante, ma sarei in grado di eseguire tutte le mie unità testano facilmente senza eseguire gli IT? (dall'IDe, durante lo sviluppo) – JSBach

+0

È possibile eseguire i test con Maven, poiché si tratta del sistema di generazione o della creazione di suite di test: http://help.eclipse.org/kepler/ index.jsp? topic =% 2Forg.eclipse.jdt.doc.user% 2FgettingStarted% 2Fqs-junit.htm – Stephan

Problemi correlati