2011-10-17 10 views
6

Mam pakiet testowy JUnit 4, który zawiera szereg klas testowych w kolejności, w jakiej muszą być uruchamiane (nasze testy integracji muszą być uruchamiane w pewna kolejność).Uruchamianie pakietu testowego JUnit4 w Maven przy użyciu wtyczki maven-failsafe

Jeśli użyję wtyczki maven-failsafe bez żadnej konfiguracji, uruchomi się test, ale nie we właściwej kolejności. Jeśli jednak ustawię wtyczkę do uruchamiania zestawu testów, testy nie będą przeprowadzane.

Czy można uruchomić zestaw testowy za pomocą wtyczki failsafe? jeśli tak, to gdzie się pomyliłem !!

Kod jest poniżej:

@RunWith(Suite.class) 
@SuiteClasses({ 
    TestCase1.class, 
    TestCase2.class, 
     ... 
    TestCaseN.class, 
}) 
public class IntegrationSuite { 
    //Do Nothing. 
} 

iz pom.xml:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <includes> 
      <include>IntegrationSuite.java</include> 
     </includes> 
    </configuration> 
    <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> 

Dzięki :)

Odpowiedz

10

Failsafe Wtyczka obsługuje runOrder (click) parametr od wersji 2.7 (całkiem niedawno). Nie ma zbyt wielu opcji, nie można wyraźnie określić kolejności, ale można ustawić ją na "alfabetyczną" i zmienić nazwy klas testowych, aby odzwierciedlały kolejność wykonywania.

Mogę również powiedzieć, że fakt, że test zależy od siebie to (test) zapach kodu; to nie jest dobre, ponieważ jest to krótka droga do opracowania nieosiągalnego zestawu testów i porzucenia go w końcu, gdy jego złożoność podnosi się ponad ludzkie zrozumienie. Dodatkowo może nie ujawnić błędów, ponieważ jest wynikiem jednej wybranej ścieżki wykonania.

BTW, wolę obejmują testy takie jak ten, z podwójną gwiazdką:

<includes> 
    <include>**/IntegrationSuite.java</include> 
</includes> 
+0

Dzięki za odpowiedź! Same testy nie polegają na sobie nawzajem, jednak ich kolejność wykonywania została określona przez dokument napisany szczegółowo o testach ... nie moja decyzja, ale muszę ją jeszcze wdrożyć !! –

+0

@HeavyMetalKid Teraz, gdy o tym myślę, na podstawie tego, jak Surefire/Failsafe znajdują przypadki testowe, prawdopodobnie pakiety nie są obsługiwane. Nie mogę jednak dać mocnego dowodu. – MaDa

+0

Z tego, co przeczytałem, szukając odpowiedzi na to, myślę, że masz rację. Spróbuję zamiast tego użyć Twojego pomysłu na imieniny typu runOrder +. Dzięki –

0

Maven-murowany-plugin może być również używany jako poniżej kodu:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.12.4</version> 
<configuration> 
<includes> 
<include>**/IntegrationSuite.java</include> 
</includes> 
</configuration> 
</plugin>  
Powiązane problemy