2013-07-25 17 views
12

Na stronie Maven and Integration Testing mówi:Czy w Maven możliwe jest przeprowadzanie testów integracyjnych w oddzielnym folderze z testów jednostkowych?

Przyszłość Plotka głosi, że przyszła wersja Maven wesprze coś podobnego src/IT/Java w fazie integracji testu, oprócz do src/test/java w fazie testowej.

ale to było z powrotem w 2011-12-11. Czy to już się stało?

W this answer do "Run maven test not in default src/test/java folder" wspomina ustawiania <testSourceDirectory> jest ich jakiś sposób robi to tylko dla testu integracji (tzn. Faza integration-test)?

Szukam użyć Maven FailSafe plugin i unikam zmiany nazwy zestawu testów integracyjnych lub używania wciąż eksperymentalnego JUnit @Categories.

Odpowiedz

12

można umieścić IT'ss w innym folderze tak:

. 
|-- 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 

jest potrzebne, aby następnie foldery znane kompilator itd

<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> 

Poniżej jest potrzebne do następujących naprawdę działa 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> 

Oznacza to, że integracja może odbywać się w tym samym module, który wadą polegającą na tym, że testy integracyjne wykorzystują te same zasoby, co testy jednostkowe. Lepszym rozwiązaniem byłoby stworzenie osobnego modułu maven, w którym można umieścić testy integracyjne w zwykłym folderze src/test/java itd. I skonfigurować tylko wtyczkę maven-failsafe-plugin.

+0

Nice! Żeby było jasne, zarówno test, jak i będzie on skanowany pod kątem testów jednostkowych i testów integracyjnych, więc zasadniczo zależy to od nazwy pliku, aby rozróżnić te dwie prawe? – ArtB

+0

Prawidłowy pierwszy scenariusz. Ale tym lepiej jest mieć inny moduł, w którym możesz zmienić konwencję nazewnictwa. Nie polecałbym tego. – khmarbaise

+0

Dlaczego wtyczka failsafe działa podczas ' weryfikuj' zamiast ' test-integracji'? Wydaje się dziwne, że system failsafe działa po ' testach po integracji ''? –