Если вы можете, выполните рефакторинг кода, чтобы смоделировать вызов зависимости как вызов внедренного члена.
public void executeCode(int iterations, Callable callable) {
for (int i = 0; i < iterations; i++)
try {
callable.call();
} catch(Exception e) {
// handle exception
i--;
}
}
Затем в JUnit вы можете передать счет по вашему выбору. Приведенный выше код является лишь одним из многих примеров, вы также можете добавить зависимость в конструктор тестируемого класса, например
public class MyClass {
private Dependency dep;
public MyClass(Dependency dep) {
this.dep = dep;
}
public void executeCode(int iterations, Callable callable) {
//...
dep.callToCode(parms...);
}
}
Опять же, в JUnit вы можете добавить другой класс, который считает количество вызовов.
Наконец, если callToCode (parms ...); это еще один метод в вашем классе, вы также можете переопределить его для подсчета, например:
public class MyClassTest {
@Test
public void testCountLoop() {
MyClass class = new MyClass() {
int calls;
@Override
public void callToCode(parms...) {
calls++;
}
}
// ... run and assert calls
}
}