Внедрение частного поля @Autowired во время тестирования

У меня есть настройка компонента, которая по сути является лаунчером для приложения. Это настроено так:

@Component
public class MyLauncher {
    @Autowired
    MyService myService;

    //other methods
}

MyService отмечен значком@Service Spring аннотации и автоматически подключается к моему классу запуска без каких-либо проблем.

Я хотел бы написать несколько тестовых примеров jUnit для MyLauncher, для этого я запустил такой класс:

public class MyLauncherTest
    private MyLauncher myLauncher = new MyLauncher();

    @Test
    public void someTest() {

    }
}

Могу ли я создать объект Mock для MyService и внедрить его в myLauncher в моем тестовом классе? В настоящее время у меня нет getter или setter в myLauncher, так как Spring обрабатывает автоматическое подключение. Если возможно, я бы не хотел добавлять геттеры и сеттеры. Могу ли я сказать тестовому случаю ввести фиктивный объект в переменную autowired, используя@Before метод init?

Если я говорю об этом совершенно неправильно, не стесняйтесь говорить это. Я все еще новичок в этом. Моя главная цель - просто иметь некоторый Java-код или аннотацию, которая помещает фиктивный объект в@Autowired переменная без меня, чтобы написать метод установки или необходимости использоватьapplicationContext-test.xml файл. Я бы предпочел сохранить все для тестовых случаев в.java файл вместо того, чтобы поддерживать отдельный контент приложения только для моих тестов.

Я надеюсь использоватьMockito для ложных объектов. В прошлом я делал это с помощьюorg.mockito.Mockito и создавая мои объекты сMockito.mock(MyClass.class).

Ответы на вопрос(6)

Ваш ответ на вопрос