ReflectionTestUtils устанавливает поле с аннотацией значения пружины, возвращающей NPE - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть класс, который реализует интерфейс.Этот класс имеет закрытое двойное поле field1, которое считывает значение из свойств приложения, используя @Value весеннюю аннотацию.

Я занимаюсь разработкой тестов, и мне нужно заполнить это поле из этого класса.Для этого я использую:

        ReflectionTestUtils.setField(Class.class, "field1", value, double.class);

Я получаю всегда исключение нулевого указателя, но журнал отладки показывает:

DEBUG org.springframework.test.util.ReflectionTestUtils - Setting field 'field1' of type [double] on target object [null] or target class [class com.a.b.c.Class] to value [value].

Кто-тознаете, как я могу установить значение для этого поля с помощью отражения или просто как заполнить какое-то значение для этого поля класса?У меня нет экземпляра этого класса, но есть интерфейсы.

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

первый аргумент - это экземпляр, а не класс

YourClass object = new YourClass();
ReflectionTestUtils.setField(object, "field1", value);
0 голосов
/ 17 мая 2019

Это должен быть объект, который вы передаете слишком setField.Для инстанса, принимающего Mockito, он должен идти:

@InjectMocks
AbcdImpl abcdImpl;

, а затем:

ReflectionTestUtils.setField(abcdImpl, "field", "value");
0 голосов
/ 27 сентября 2018

Я не могу сказать, почему вы получаете NullPointer, но я использую следующую форму в качестве аннотации уровня класса в своих тестах для установки свойства:

...
@TestPropertySource(properties = {
    "key.from.properties=myValue",
})
public class MyTest {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...