Найпростіший (як мінімум необхідний кількість нового коду) для цього - запустити тест як параметризований тест (анотувати з @RunWith(Parameterized.class)
і додати метод для надання 10 порожніх параметрів). Таким чином фреймворк виконає тест 10 разів.
Цей тест повинен бути єдиним тестом у класі, а краще сказати, всі методи тестування повинні бути виконані 10 разів у класі.
Ось приклад:
@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");
}
}
З урахуванням вищесказаного це можливо навіть зробити з конструктором без параметрів, але я не впевнений, чи планували це автори фреймворку, чи це порушиться в майбутньому.
Якщо ви реалізуєте власного бігуна, то ви могли б змусити бігуна виконати тест 10 разів. Якщо ви використовуєте сторонній бігунер, то з 4.7 ви можете використовувати нову @Rule
анотацію та реалізувати MethodRule
інтерфейс, щоб він взяв оператор та виконав його 10 разів у циклі for. В даний час недолік цього підходу полягає в тому, що @Before
і @After
отримати виконується тільки один раз. Це, ймовірно, зміниться в наступній версії JUnit ( @Before
запуск буде запущений після @Rule
), але незалежно від того, ви будете діяти на тому самому екземплярі об'єкта (те, що не відповідає правді Parameterized
). Це передбачає, що будь-який бігун, з яким ви ведете клас, правильно розпізнає @Rule
примітки. Це лише в тому випадку, якщо він делегує бігунам JUnit.
Якщо ви працюєте зі спеціальним бігуном, який не розпізнає @Rule
анотацію, то вам дійсно застряг у тому, щоб написати власний бігун, який делегує належним чином цьому бігуну, і запустити його 10 разів.
Зауважте, що існують й інші способи вирішити це (наприклад, теорія бігуна), але всі вони потребують бігуна. На жаль, JUnit наразі не підтримує шари бігунів. Це бігун, який прикував інших бігунів.