Исключение при насмешливом интерфейсе с Mockito - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь проверить, был ли вызван метод интерфейса и передано точное значение. Я получаю следующую ошибку:

org.mockito.exceptions.misusing.UnfinishedVerificationException: отсутствует вызов метода для verify (mock) здесь: -> на com.example.app.initialize (example.java:136)

Пример правильной проверки: проверить (макет) .doSomething ()

В этой строке проверки выдается ошибка:

Mockito.verify(callback).onInitializeResult("initialized");

Мой класс интерфейса:

public interface InitCallback {
/**
 * Returns whether or not the app was initialized.     .
 */
    void onInitializeResult(String result);
}

Мой юнит-тест:

@Test
    public void initializationTest(){
        InitCallback callback = Mockito.spy(new InitCallback() {
            @Override
            public void onInitializeResult(String result) {

            }
        });
        mExample.initialize(mContext, callback);
        Mockito.verify(callback).onInitializeResult("initialized");
    }

Я также пытался заменить макет обратного вызова на:

InitCallback callback = Mockito.mock(InitCallback.class);
Mockito.doNothing().when(callback).onInitializeResult(Mockito.anyString());

Однако я все еще получаю ту же ошибку. Интерфейс имеет только 1 метод, и он не является окончательным. Есть мысли?

1 Ответ

0 голосов
/ 03 июля 2018

Оказывается, mExample вызывал другой макетный экземпляр, методы которого не были определены. Из другого поста переполнения стека Ссылка

Mockito генерирует исключения, если вы неправильно используете его, чтобы вы знали, если ваш тесты написаны правильно. Гоча, что Мокито делает проверка в следующий раз, когда вы используете платформу (например, при следующей проверке, заглушка, звони издеваться и т.д.) Но даже если исключение может быть выброшено в следующем тесте сообщение об исключении содержит навигационный стек микроэлемент с расположением дефекта. Следовательно, вы можете нажать и найдите место, где Мокито злоупотребляли.

Таким образом, в случае, указанном в вопросе, исключение было сгенерировано в

mExample.initialize(mContext, callback);

но не выбрасывается до следующего вызова проверки.

...