У меня есть следующее поле в моем классе
@Resource(name = "lobIdCancellationNodeMap")
private Map<String, List<String>> lobIdCancellationNodeMap;
После этой строки мы получили прямой доступ к этому полю lobIdCancellationNodeMap
Я не могу установить значение для этого, используя Mockito, и нет никакого конструктора, который может установить это значение.
Вот как он используется
lobIdCancellationNodeMap.get(lobId)
Мне не разрешено изменять класс реализации
Я решил эту проблему, используя класс ReflectionTestUtils, предоставленный Spring Framework, используя это, вы можете установить любое поле класса независимо от его модификатора доступа.
ReflectionTestUtils.setField(mapper, "lobIdCancellationNodeMap", lobIdCancellationNodeMap);
Хотя я согласен с примечаниями других пользователей, что кажется неправильным тестировать что-то, что не является публичным, у меня есть некоторое сочувствие к ситуации "Мне не разрешено изменять класс реализации".
Аннотирование @Resource предназначено для использования приложением для инъекции экземпляра во время выполнения. Я предлагаю вам настроить свои тесты с помощью контекста, аналогичного контексту вашего приложения во время выполнения. Таким образом, у этого класса будет введен его ресурс.
В противном случае вы могли бы использовать Reflection, чтобы установить значение в требуемое значение.