2015-03-28 2 views
0

У меня есть следующие настройки:Дразнящий статический метод с общим параметром

Класс для теста: SeriesOffset, который проходит BaseDisplayOption

испытания Класс: SeriesOffsetTest

При создании объекта из SeriesOffset класса к проверьте его, конструктор того же самого делает супервызов, который затем делает следующий вызов:

logger = LoggingService.getLog(this.getClass()); 

где LoggingService - абстрактный класс, а getLog(Class<?> clazz) - статический метод с общим параметром класса. Этот метод вызова надо насмехаться. Я создал макет реализацию такой же с классом под названием ILogImpl и это, как я пытаюсь проверить:

ILogImpl a = new ILogImpl(); 
    PowerMockito.mockStatic(LoggingService.class); 
    PowerMockito.when(LoggingService.getLog(SeriesOffset.class)).thenReturn(a); 

Но этот метод не кажется, работать и он вызывает реальное осуществление вместо фиктивного тот, который Мне нужно позвонить. Трассировка ошибка заключается в следующем: error trace

+0

Вы добавили следующие строки для теста '@RunWith (PowerMockRunner.class)' '@PrepareForTest (LoggingService.class)'? –

+0

Что такое код LoggingService? – Crazyjavahacking

+0

@Crazyjavahacking http://pastebin.com/FjeVpuwR –

ответ

0

По следу ошибок, я не вижу, где ваше реальное осуществление getLog вызывается, но реальный класс инициализатор («clinit») это называют, как часть макетного создания, потому что вы, по крайней мере, ссылаетесь на фактический класс и его статические поля и static {} блоки загружаются, как обычно.

Посмотрите на строку 41 журнала LoggingService.java, и если проблема там не очевидна, отредактируйте свой ответ, чтобы мы могли его увидеть и диагностировать дальше.

Смежные вопросы