Как издеваются метод, как показано ниже:Mock наследство статический метод с вложенными вызовами
LoggerUtil.getInstance().getAppLog().info("Some log statement");
Здесь LoggerUtil конкретизируется в статическом образом, хотя регистраторы впрыскивается в этот вызов через пружины.
<bean id="LoggerUtil" class="util.LoggerUtil" factory-method="getInstance">
<property name="appLog" ref="AppLogger" />
</bean>
<bean id="AppLogger" class="org.apache.log4j.Logger" factory-method="getLogger">
<constructor-arg value="logging.AppLogger" />
</bean>
Я попытался код ниже, но безрезультатно:
@Test
public void testLoggerUtil() {
PowerMockito.mockStatic(LoggerUtil.class);
LoggerUtil logUtil = mock(LoggerUtil.class);
Logger logger = mock(Logger.class);
PowerMockito.when(LoggerUtil.getInstance()).thenReturn(logUtil);
when(logUtil.getAppLog()).thenReturn(logger);
Mockito.doNothing().when(logger).info(any(String.class));
LoggerUtil.getInstance().getAppLog().info("Some log");
}
Код наследие и утверждение журнала присутствует в тысячах мест. Внесение каких-либо изменений в это невозможно.
Любая помощь будет высоко оценена. Заранее спасибо.
Что на самом деле происходит не так? – durron597
Я получаю исключение, вызывая статический макет. –
Какое исключение? Пожалуйста, отредактируйте свой вопрос с дополнительной информацией. – durron597