Ниже приведен метод, который я пытаюсь написать тест Junit для:Проверка того, что статус журнала журнала журнала был вызван с помощью Junit?
Метода Я хочу испытание:
//logger declared outside of method in Class
private static Logger LOGGER = LoggerFactory.getLogger(PersonService.class);
public void showOutputOfIdentifications(int age) {
if(age>25){
LOGGER.info("Over 25");
}else{
LOGGER.info("25 or Under");
}
}
Как я могу проверить, чтобы убедиться, что правильное утверждение Logback
журнала было названо ?
В моих тестах я попытался высмеять logger
и убедиться, что он был вызван, однако это не сработало?
Current Test Покушение:
@Test
public void testShowOutputOfIdentifications() throws ParseException{
int age = 10;
Logger LOGGER_mock = mock(Logger.class);
//call method under test
showOutputOfIdentifications(age);
verify(LOGGER_mock).info("25 or under");
}
токовый выход теста недостаток:
Wanted but not invoked:
logger.info(
"25 or under "
);
Actually, there were zero interactions with this mock.
У испытуемого класса, вероятно, есть статический логгер LOGGER, который используется. Вы должны были бы ввести свой макет в качестве этого регистратора. Создание другого регистратора не вызовет его. – Fildor
спасибо, пожалуйста, покажите пример этого, я отредактировал оригинальный метод, чтобы показать мой статический логгер # – java123999
Дело в том, что вы должны ** контролировать ** объекты, которые использует ваш «код под тестированием». Если у вас есть фабрика, создайте для вас объект, и этот объект затем будет назначен в вашем тестируемом классе; у вас нет контроля. – GhostCat