Предположим, я хочу, чтобы проверить код, как это:Получение числа вызовов макете
class ClassToTest
// UsedClass1 contains a method UsedClass2 thisMethod() {}
UsedClass1 foo;
void aMethod()
{
int max = new Random().nextInt(100);
for(i = 0; i < max; i++)
{
foo.thisMethod().thatMethod();
}
}
}
Если у меня есть тест, как это:
ClassToTest test;
UsedClass1 uc1;
UsedClass2 uc2;
@Test
public void thingToTest() {
test = new ClassToTest();
uc1 = mock(UsedClass1.class);
uc2 = mock(UsedClass2.class);
when(uc1.thisMethod()).thenReturn(uc2);
when(uc2.thatMethod()).thenReturn(true);
test.aMethod();
// I would like to do this
verifyEquals(callsTo(uc1.thisMethod()), callsTo(uc2.thatMethod()));
}
Как я могу получить количество звонков в uc1.thisMethod()
и uc2.thatMethod()
, так что я могу проверить, что оба они вызывались одинаковое количество раз?
Единственный способ, которым я могу думать (прямо сейчас), - разместить обертку вокруг каждого метода, который увеличивает его. wn при каждом вызове. AFAIK jvm не отслеживает количество раз, когда какой-либо метод/класс называется/instanced. – munyul