Поле @Autowired является нулевым во время тестов с Junit, как я могу его смоделировать / создать экземпляр? - PullRequest
0 голосов
/ 06 апреля 2020

У меня нет доступа к MyClass2 коду и я не могу его изменить. Как мне издеваться / создавать MyClass2 myClass2?

Классы и тестирование кода:

@RunWith(JUnit4.class)//can't change thisone
public class MyTest
{
    @Autowired // or not, tried both ways
    MyClass testedInstance= new MyClass();
    @Test
    public void boot() throws Exception{
        testedInstance.boot();
        assertTrue(true);
    }
}

public class MyClass
{
    @Autowired 
    private MyClass2 myClass2;

    void boot()
    {
        myClass2.foo();//getting a null pointer here
    }
}

1 Ответ

1 голос
/ 06 апреля 2020

Сначала вам нужно аннотировать ваш тестовый класс с помощью:

@RunWith( SpringJUnit4ClassRunner.class )

Затем о MyClass:

@Autowired 
MyClass testedInstance;

вам нужно удалить = new MyClass();, потому что вы его автоматически подключаете.

Тогда с тех пор вы вводите MyClass, если для MyClass2 имеется доступный для внедрения экземпляр, он будет добавлен в MyClass, если нет -

Вам необходимо настроить контекст приложения так, что такой бин MyClass2 существует,

...