2013-10-04 45 views
5

Birkaç ayrı sınama yazdım, yalnızca ayrı sınıflara değil, uygulamamın hangi alanın test edildiğine bağlı olarak ayrı alt paketlere bölünmüş. Bir ile dört arasındaki alt paketlerinde tüm testler uzatmak üst sınıfı bulunmaktadır my.package.tests paketteJUnit4 Çalıştırma Test sınıfları belirtilen sırada

my.package.tests 
my.package.tests.four 
my.package.tests.one 
my.package.tests.three 
my.package.tests.two 

: Yani, benim paket yapısı böyle biraz görünüyor. Şimdi, testlerin yapıldığı sırayı seçmek istiyorum; sınıflar içinde (FixMethodOrder annotation ile mümkün görünmektedir) değil, sınıfların veya alt paketlerin kendileri sırasına göre (Bu yüzden one alt paketindekiler, daha sonra two, vb.). Bazı test sınıfları, fark yaratacak durumda olan Parameterized runner'u kullanır. Testlerin başarılı olması için siparişi seçmek gerekli değildir, birbirlerinden bağımsızdırlar; bununla birlikte, programın çeşitli bölümlerinin normalde analizini biraz daha kolay hale getirdiği sıralamayı yansıtmak için bunları sıralamak yararlı olacaktır.

Şimdi, ideal olarak, JUnit'e testlerin yürütülmesi için sipariş vermesini söyleyen bir yapılandırma dosyasına sahip olmak istiyorum; Ancak tahmin ediyorum ki o kadar kolay olmayacak. Burada hangi seçenekler var ve en kolay olan ne olurdu? Ayrıca, alt paketleri listelemeyi tercih ediyorum, paketlerdeki çeşitli sınıfları veya sınıflardaki test işlevlerini değil.

Java 1.6.0_26 (burada bir seçeneğim yok) ve JUnit 4.11 kullanıyorum.

cevap

7

Bunu test paketleriyle yapabilirsiniz. (Bunları da "yuvalayabilirsiniz")

@SuiteClasses({SuiteOne.class, SuiteTwo.class}) 
@RunWith(Suite.class) 
public class TopLevelSuite {} 

@SuiteClasses({Test1.class, Test2.class}) 
@RunWith(Suite.class) 
public class SuiteOne {} 


@SuiteClasses({Test4.class, Test3.class}) 
@RunWith(Suite.class) 
public class SuiteTwo {} 
... Ve benzeri. Bir giriş noktası olarak "toplevelsuite" kullanın ve testler, @SuiteClasses dizisini tanımladığınız sırada çalışır. bir sınıf içinde yöntemlere gelince

, zaten sorunuzun da belirttiğimiz gibi onlar (@FixMethodOrder ile yürütmek sırasını belirtebilirsiniz.

+0

Teşekkür, bir cazibe gibi çalışır! Orada değil sanırım bir şekilde "bir sonraki paketin tüm testlerini çalıştır" seçeneğini belirtme seçeneği sağda olsa da, – blalasaadri

+0

Hayır, otomatik olarak bir paket içinde tüm sınıfları içerecek şekilde söyleyemezsiniz (AFAIK, en azından) – blgt

+1

Buradaki genel fikir şudur: Her pakete bir paket sınıfını yerleştirebilirsiniz, bu paketin içerdiği tüm testleri içerecektir.Ana "ebeveyn" paketini ana pakete koyun ve içindekileri dahil edin.Yani bu şekilde Suite hiyerarşinizdeki Suite hiyerarşisini taklit edebilirsiniz. – blgt

İlgili konular