Wstrzykiwanie pola prywatnego @Autowired podczas testowania
Mam konfigurację komponentu, która jest zasadniczo programem uruchamiającym dla aplikacji. Jest tak skonfigurowany:
@Component
public class MyLauncher {
@Autowired
MyService myService;
//other methods
}
MyService jest opatrzone adnotacją@Service
Wiosenna adnotacja i jest automatycznie dodawana do mojej klasy programu uruchamiającego bez żadnych problemów.
Chciałbym napisać kilka przypadków testowych jUnit dla MyLauncher, aby to zrobić, zacząłem taką klasę:
public class MyLauncherTest
private MyLauncher myLauncher = new MyLauncher();
@Test
public void someTest() {
}
}
Czy mogę utworzyć obiekt Mock dla MyService i wprowadzić go do myLauncher w mojej klasie testowej? Obecnie nie mam gettera ani setera w myLauncher, ponieważ Spring obsługuje automatyczne generowanie. Jeśli to możliwe, nie chcę dodawać pobierających i ustawiających. Czy mogę powiedzieć przypadkowi testowemu, aby wstrzyknął pozorowany obiekt do zmiennej autowired za pomocą@Before
metoda init?
Jeśli idę w tym całkowicie źle, nie krępuj się powiedzieć. Nadal jestem w tym nowy. Moim głównym celem jest po prostu posiadanie kodu Java lub adnotacji, która umieszcza w nim próbny obiekt@Autowired
zmienna bez konieczności pisania metody ustawiającej lub konieczności użyciaapplicationContext-test.xml
plik. Wolałbym raczej zachować wszystko dla przypadków testowych w.java
plik zamiast utrzymywać osobną zawartość aplikacji tylko dla moich testów.
Mam nadzieję użyćMockito dla pozorowanych obiektów. W przeszłości robiłem to za pomocąorg.mockito.Mockito
i tworzenie moich obiektów za pomocąMockito.mock(MyClass.class)
.