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