Mockito: Как проверить, что макет вызывается последним?

1

Я знаю о 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.

Спасибо за ваше время

Теги:
unit-testing
junit
mockito

1 ответ

0

Вы можете создать класс-оболочку, такой как этот

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();
  • 0
    Может быть, я не понимаю, давай встретимся. Но все, что я вижу, это обертка вокруг методов мокито. Как это позволяет мне проверять, что макет был вызван последним, не проверяя каждый другой макет?
  • 0
    Пример: Mock1, Mock2, Mock3. Протестированный метод делает mock1.operation1, mock2.operation2, mock3.operation3. В моем случае, есть так много макетов, у меня есть список макетов, но я только хочу проверить, что mock3 называется последним. Без проверки взаимодействия mock1 и mock2.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню