Проверка Mockito не выполняется, когда вызывается Mockito.Times. - PullRequest
0 голосов
/ 06 февраля 2019
class Display extends JFrame{
  public void setImage(Image image) {
    this.setIconImage(image);
  }
}

Test

public class DisplayConfigurationTest {
  @Mock
  private DisplayConfiguration displayMock;

  @Test
  public void setFrame_Icon_shouldSetWindowIcon() throws Exception {        
    displayMock.setImage(null);
    verify(displayMock, times(1)).setIconImage(null);
  }
}

Test выдает ошибку:

Требуется, но не вызывается: displayMock.setIconImage (null);-> at DisplayConfigurationTest.setFrame_Icon_shouldSetWindowIcon (DisplayConfigurationTest.java)

Однако были другие взаимодействия с этим макетом: displayMock.setImage (null);-> DisplayConfigurationTest.setFrame_Icon_shouldSetWindowIcon (DisplayConfigurationTest.java)

1 Ответ

0 голосов
/ 06 февраля 2019

Когда вы @Mock объект, методы этого объекта фактически перестают работать.Затем вы можете сообщить макету, что должно произойти при вызове любого из методов (включая callRealMethod()).Итак, в вашем примере вы можете проверить, был ли setImage() вызван 1 раз, но setIconImage() не будет вызван.

То, что вы на самом деле хотите, это real Display (илиDisplayConfiguration - это не ясно из вашего кода), в котором все объекты-члены @Mock ed.

В качестве альтернативы, в текущем коде вы можете добавить это в качестве первой строки вашего метода тестирования:

when(displayMock.setImage(any())).thenCallRealMethod();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...