Я знаю о Mockito.InOrder(http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/InOrder.html)
Несмотря на то, что я хорошо использовал для проверки, чтобы mock вызывался перед любым другим способом в методе, я не могу найти способ использовать его, чтобы проверить, является ли последний макет последним.
В моем случае я тестирую медиатор, который вызывает несколько интерфейсов. В объявлении finally блокировка разблокируется.
Я хочу, чтобы мой unit тест специально тестировал, есть ли исключение или нет, блокировка выпущена независимо от того, что и, конечно же, после любой другой операции, независимо от того, сколько было выполнено.
У меня есть список макетов, которые участвуют, но я не могу понять, как рассказать Мокито:
Привет ! InOrder.verify(aMockWhichIsNotTheLast, atLeast (0)). AnyMethod()
Затем InOrder.verify(wantedMock).unlock(), таким образом, я знаю, что мой макет был последним макетом, вызванным среди всех моих mocks.
Спасибо за ваше время
Вы можете создать класс-оболочку, такой как этот
public final class Mocks
{
private final List<Object> mocks = new ArrayList<>();
public <T> T register(final T mock)
{
mocks.add(Objects.requireNonNull(mock));
return mock;
}
public InOrder inOrder()
{
return Mockito.inOrder(mocks.toArray());
}
public void verifyNoMoreInteractions()
{
Mockito.verifyNoMoreInteractions(mocks.toArray());
}
}
Затем вы можете использовать свой класс как таковой:
final Mocks mocks = new Mocks();
final Whatever mock1 = mocks.register(mock(Whatever.class));
final Whatever2 mock2 = mocks.register(mock(Whatever2.class));
final InOrder inOrder = mocks.inOrder();
// verify, verify, verify
mocks.verifyNoMoreInteractions();