Я пытаюсь единицу проверить мой класс, используя MockitoJUnitRunner.classMockitoJUnit Test не удалось создать экземпляр объекта Передразнивало
Вот фрагмент кода из моего тестового класса:
@RunWith(MockitoJUnitRunner.class)
public class AHCLIManagerTest {
@Mock
RObjectMapper objectMapper;
@Mock
AHCLIUpdateCommand ahcliUpdateCommandMock;
@InjectMocks
AHCLIManager underTest;
И в моем главном классе , у меня есть:
@Service
public class AHCLIManager implements ProductionUpdateManager {
@Autowired
private RObjectMapper objectMapper;
@Autowired
private AHCLIUpdateCommand ahcliUpdateCommand;
Когда я пытаюсь прочитать объект из строки JSON с помощью объекта картографа, следующим образом, я получаю NullPointerException
JsonNode rootNode = objectMapper.readTree(requestJSON);
Я пытался использовать ReflectionTestUtils инициализировать ObjectMapper из класса Test, как показано ниже, и тест прошел
ReflectionTestUtils.setField(underTest, "objectMapper", new RObjectMapper());
EDIT:
Кроме того, я использую MockitoAnnotations.initMocks()
следующим образом:
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
Я не уверен, почему инъекция Mock не работает.
Вы уверены, что это не сработало на 'objectMapper.readTree'? Или это не работает в строке, использующей 'rootNode'? Ответ по умолчанию на метод - это возврат 'null', если вы ничего не указали. Если вы используете новый экземпляр объекта (как вы делаете с 'ReflectionTestUtils', если, конечно, удастся, когда вы вводите полный экземпляр вместо макета. –
@ M.Deinum Спасибо, что спустили меня. Когда я ответил на этот вопрос 6 часов назад (через 5 минут после публикации) OP не показывал каких-либо доказательств, вызываемых 'initMocks()', поэтому мой ответ. –
Как я уже упоминал в комментарии, вам не нужно, чтобы из-за использования runner, 'initMocks' нужен только, если вы не можете использовать runner. –