2011-10-17 27 views
6

Çalıştırılması gereken sırayla bir dizi test sınıfı içeren bir JUnit 4 test paketine sahibim (Entegrasyon testlerimizin kesin emir).Maven'de bir JUnit4 Test Suite'i çalıştırmak için maven-failsafe-plugin

Herhangi bir yapılandırma yapmadan maven-failsafe-plugin kullanırsam, sınamayı çalıştırır, ancak doğru sırada değil. Ancak, test paketini çalıştırmak için eklentiyi ayarlarsam hiçbir test çalıştırılmaz.

Hatalı eklentiyi kullanarak bir test paketi çalıştırmak mümkün mü? eğer öyleyse, nerede yanlış gittim!

kod aşağıda:

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

ve pom.xml gelen

:

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

Teşekkür :)

cevap

10

Arıza güvenli eklenti sürümü 2.7 (oldukça yeni) beri runOrder (click) parametresini destekler. Çok fazla seçenek yoktur, siparişi açıkça belirtemezsiniz, ancak bunu "alfabetik" olarak ayarlayabilir ve test sınıflarınızı çalışma sırasını yansıtacak şekilde yeniden adlandırabilirsiniz.

Ayrıca deney birbirine bağlı olduğu gerçeği (test) kod koku olduğu duruma ilişkin olabilir; Bu iyi bir şey değildir, çünkü elde edilemeyen bir dizi sınavın geliştirilmesinin kısa bir yoludur ve sonunda karmaşıklığı insan kavrayışının üstünde uçurduğunda onu terk eder. Ayrıca, seçilen bir yürütme yolunun sonucu olarak hataları ortaya çıkarmayabilir.

BTW, bir çift yıldız ile böyle testleri dahil etmeyi tercih:

<includes> 
    <include>**/IntegrationSuite.java</include> 
</includes> 
maven-güzelliğinde-eklenti ayrıca kodunun altına olarak kullanılabilir
+0

teşekkürler! Testler kendilerini çalıştırmak için birbirlerine güvenmiyorlar, ancak onların çalışma sırası testin ayrıntılarını yazmış bir belge tarafından belirlendi ... benim kararım değil, yine de bunu uygulamak zorundayım! –

+0

@HeavyMetalKid Şimdi Surefire/Failsafe'in test senaryolarını nasıl bulduğuna bağlı olarak, süitler muhtemelen desteklenmiyor. Yine de sert bir kanıt veremem. – MaDa

+0

Buna bir cevap ararken okuduğumdan, haklı olabileceğinizi düşünüyorum. Bunun yerine runOrder + alfabetik isimlendirme fikrini deneyeceğim. Teşekkürler –

0

: Cevabınız için

<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>  
İlgili konular