junit - проверяй ЛОГЕР без насмешек - PullRequest
0 голосов
/ 21 декабря 2018

В моем функциональном тесте я не хочу имитировать объект LOGGER, но хочу проверить его в ошибочных сценариях.Ниже приведены несколько строк кода:

private static final Logger LOGGER_OF_ANOTHER_CLASS = Logger.getLogger(DataProvider.class);

@Before public void setup() { Mockito.spy(LOGGER_OF_ANOTHER_CLASS); }

@Test public void testWarningIsLoggedWhenNoDataExists() {
    whenInvalidCriteriaIsPassed();    // This is private method 
    Mockito.verify(LOGGER_OF_ANOTHER_CLASS, times(1)).warn(new ArgumentMatcher<String>() {
        @Override
        public boolean matches(Object argument) {
            String message = (String) argument;
            return message.startsWith("Unable to fetch data for criteria:");
        }
    });
}

На этом я получаю исключение

org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to verify() is not a mock!
Examples of correct verifications:
verify(mock).someMethod();
verify(mock, times(10)).someMethod();
verify(mock, atLeastOnce()).someMethod();

Я пробовал несколько сценариев поиска в StackOverflow, но не смог.

1 Ответ

0 голосов
/ 04 августа 2019

Я думаю, что исключение на месте.Небольшое изменение, вероятно, исправит вашу проблему с тестом.

private static final Logger LOGGER_OF_ANOTHER_CLASS = Mockito.spy(Logger.getLogger(DataProvider.class));

...