Внедрение частного поля @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 в моем тестовом классе? Я в настоящее время нев myLauncher нет геттера или сеттера, так как Spring обрабатывает автоматическое подключение. Если возможно, яЯ хотел бы не добавлять геттеры и сеттеры. Могу ли я сказать тестовому случаю ввести фиктивный объект в переменную autowired, используя@Before
метод init?
Если я'Я говорю об этом совершенно неправильно, не стесняйтесь говорить это. Я'Я все еще новичок в этом. Моя главная цель - просто иметь некоторый Java-код или аннотацию, которая помещает фиктивный объект в@Autowired
переменная без меня, чтобы написать метод установки или необходимости использоватьapplicationContext-test.xml
файл. Я бы предпочел сохранить все для тестовых случаев в.java
файл вместо того, чтобы поддерживать отдельный контент приложения только для моих тестов.
Я надеюсь использоватьMockito для ложных объектов. В прошлом я делал это с помощьюorg.mockito.Mockito
и создание моих объектов с.Mockito.mock(MyClass.class)