Bunu yapmanın en kolay (en az miktarda yeni kod gerektiği gibi) yolu, testi parametreleştirilmiş bir test olarak çalıştırmaktır ( @RunWith(Parameterized.class)
10 boş parametre sağlamak için bir ile açıklama ekleyin ve bir yöntem ekleyin). Bu şekilde, çerçeve testi 10 kez çalıştıracaktır.
Bu testin sınıftaki tek test olması veya daha iyisi tüm test yöntemlerinin sınıfta 10 kez çalıştırılması gerekir.
İşte bir örnek:
@RunWith(Parameterized.class)
public class RunTenTimes {
@Parameterized.Parameters
public static Object[][] data() {
return new Object[10][0];
}
public RunTenTimes() {
}
@Test
public void runsTenTimes() {
System.out.println("run");
}
}
Yukarıdakilerle, bunu parametresiz bir kurucu ile yapmak bile mümkündür, ancak çerçeve yazarlarının bunu amaçladığından veya gelecekte bunun bozulup bozulmayacağından emin değilim.
Kendi koşucunuzu uyguluyorsanız, koşucunun testi 10 kez çalıştırmasını sağlayabilirsiniz. Üçüncü taraf bir çalıştırıcı kullanıyorsanız, 4.7 ile, yeni @Rule
açıklamayı kullanabilir ve MethodRule
arayüzü uygulayabilir, böylece ifadeyi alır ve bir for döngüsünde 10 kez çalıştırır. Bu yaklaşımın geçerli dezavantajı olduğunu @Before
ve @After
sadece bir kez çalıştırmak olsun. Bu muhtemelen JUnit'in bir sonraki sürümünde değişecektir ( @Before
bundan sonra çalışacaktır @Rule
), ancak ne olursa olsun nesnenin aynı örneği üzerinde hareket edeceksiniz ( Parameterized
koşucu için geçerli olmayan bir şey ). Bu, sınıfı birlikte çalıştırdığınız koşucunun @Rule
ek açıklamaları doğru şekilde tanıdığını varsayar . Bu sadece JUnit koşucularına yetki veriyorsa geçerlidir.
@Rule
Ek açıklamayı tanımayan özel bir koşucu ile koşuyorsanız, o Koşucuya uygun şekilde yetki veren ve onu 10 kez çalıştıran kendi koşucunuzu yazmak zorunda kalırsınız.
Bunu potansiyel olarak çözmenin başka yolları da olduğunu unutmayın (Teoriler koşucusu gibi), ancak hepsinin bir koşucu gerektirdiğini unutmayın. Maalesef JUnit şu anda koşucu katmanlarını desteklemiyor. Bu diğer koşucuları zincirleyen bir koşucu.