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 @Rule
adnotacji i zaimplementować MethodRule
interfejs tak, aby pobierał instrukcję i wykonywał ją 10 razy w pętli for. Obecną wadą tego podejścia jest to @Before
i @After
uruchamianie tylko raz. Prawdopodobnie zmieni się to w następnej wersji JUnit ( @Before
uruchomi się po @Rule
), ale niezależnie od tego, będziesz działał na tej samej instancji obiektu (coś, co nie jest prawdą w przypadku Parameterized
runnera). Zakłada się, że niezależnie od biegacza, z którym prowadzisz zajęcia, poprawnie rozpoznaje @Rule
adnotacje. Dzieje się tak tylko w przypadku delegowania do biegaczy JUnit.
Jeśli biegasz z niestandardowym biegaczem, który nie rozpoznaje @Rule
adnotacji, 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.