2016-03-10 3 views
4

Мне нужно запустить серию модульных тестов над классом, который имеет реализацию @Autowired Logger. Основной идеей реализации было:Инъекция объекта, хотя InjectMocks Spy

@Mock Logger logger; 
@InjectMocks 
TestedClass tested; 

, но я хочу сохранить функциональность вывода журнала.

Может ли Mockito lib вводить объекты с помощью @InjectMock? Я видел примеры аннотации @Spy, но когда я пытался ее использовать, я всегда получал исключение NullPointerException. Я знаю, что я всегда могу напрямую использовать рефлексию, но идея состоит в том, чтобы избежать такого кода.

ответ

4

Хорошо. Я должен сам ответить, если нет ответов.

Чтобы подтолкнуть живой объект через @InjectMock аннотацию используются @Spy аннотаций:

@Spy 
Logger logger = LoggerFactory.getLogger(""); 
@InjectMocks 
TestedClass tested = new TestedClass(); 

Единственное, что @Spy не может справиться с окончательными (и некоторыми другими вещами) классов, на которых я ударил в моем случае.