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).

questionAnswers(6)

yourAnswerToTheQuestion