Najłatwiejszym sposobem (ponieważ wymagana jest najmniejsza ilość nowego kodu) jest uruchomienie testu jako testu sparametryzowanego (opatrzenie adnotacją @RunWith(Parameterized.class)i dodanie metody zapewniającej 10 pustych parametrów). W ten sposób framework uruchomi test 10 razy.
Ten test musiałby być jedynym testem w klasie lub lepiej umieścić wszystkie metody testowe w klasie 10 razy.
Oto przykład:
@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");
}
}
Dzięki temu można to zrobić nawet za pomocą konstruktora bez parametrów, ale nie jestem pewien, czy autorzy frameworka to zamierzyli, czy też w przyszłości się to zepsuje.
Jeśli wdrażasz własnego biegacza, możesz poprosić biegacza o wykonanie testu 10 razy. Jeśli korzystasz z zewnętrznego narzędzia uruchamiającego , to w wersji 4.7 możesz użyć nowej @Ruleadnotacji i zaimplementować MethodRuleinterfejs tak, aby pobierał instrukcję i wykonywał ją 10 razy w pętli for. Obecną wadą tego podejścia jest to @Beforei @Afteruruchamianie tylko raz. Prawdopodobnie zmieni się to w następnej wersji JUnit ( @Beforeuruchomi się po @Rule), ale niezależnie od tego, będziesz działał na tej samej instancji obiektu (coś, co nie jest prawdą w przypadku Parameterizedrunnera). Zakłada się, że niezależnie od biegacza, z którym prowadzisz zajęcia, poprawnie rozpoznaje @Ruleadnotacje. Dzieje się tak tylko w przypadku delegowania do biegaczy JUnit.
Jeśli biegasz z niestandardowym biegaczem, który nie rozpoznaje @Ruleadnotacji, naprawdę utkniesz z koniecznością napisania własnego biegacza, który deleguje odpowiednio tego biegacza i uruchamia go 10 razy.
Zauważ, że istnieją inne sposoby, aby potencjalnie rozwiązać ten problem (np. Biegacz teorii), ale wszystkie wymagają biegacza. Niestety JUnit nie obsługuje obecnie warstw runnerów. To biegacz, który wiąże innych biegaczy.