При использовании Mockito 1.9.x я использовал Whitebox
для установки значений полей для "инъекции" mocks. Пример ниже:
@Before
public void setUp() {
eventHandler = new ProcessEventHandler();
securityService = new SecurityServiceMock();
registrationService = mock(RegistrationService.class);
Whitebox.setInternalState(eventHandler, "registrationService", registrationService);
Whitebox.setInternalState(eventHandler, "securityService", securityService);
}
Мне очень нравится этот подход, но теперь, когда я попытался перейти на Mockito
2.2.7
, я заметил (точнее, мой IDE заметил и сказал мне несколько раз), что Whitebox больше не было найдено в Mockito.
Я нашел одну альтернативу, которая может работать как замена, а это /p > org.powermock.reflect.Whitebox
, проблема в том, что я получаю другую зависимость (Powermock), просто чтобы использовать Whitebox.
Powermock
также имеют класс с именем Whitebox
, но, к сожалению, он выглядит так, как будто он не может использоваться с Mockito 2.2.x
Есть ли какие-либо хорошие альтернативы в Mockito, которые я могу использовать для ввода "вручную" вручную, теперь, когда Whitebox
больше не доступен?
Решение
Я написал в комментарии в ответ на сообщение, сделанное из @JeffBowman. Короче говоря, я решил скопировать код WhiteBox и использовать его, поскольку он используется в большинстве тестовых примеров, и класс не имеет зависимостей от других классов. Это был самый быстрый путь для решения этой проблемы.
Примечание Решение, предлагаемое @bcody, является лучшей альтернативой, если вы используете spring, он не содержит дополнительного кода для вашего обслуживания. Я получил эту информацию допоздна:(