Die Java-Klasse (genannt ServiceCaller
) Ich möchte Test hat dies zu injizieren:Wie mehrere spottet der gleichen Schnittstelle
@Autowired @Qualifier(value="serviceA")
SomeService serviceA;
@Autowired @Qualifier(value="serviceB")
SomeService serviceB;
(es gibt eine doWork()
Methode, die einen Zustand überprüfen wird und rufen entweder A oder B) .
Wie injiziere ich jeden Service in die entsprechende Variable?
Mein Junit hat diese:
@InjectMocks ServiceCaller classUnderTest = new ServiceCaller();
@Mock SomeService mockServiceA;
@Mock SomeService mockServiceB;
Doch wenn ich meine Tests ausführen, dass Service A/B unter dem korrekten Zustand genannt zu überprüfen, ich Null-Zeiger erhalten, wie der Schein injiziert worden ist.
Offensichtlich ist es wegen mehrerer Abhängigkeiten auf der gleichen Schnittstelle (SomeService
). Gibt es eine Möglichkeit, das Qualifikationsmerkmal anzugeben, wenn der Schein-Service deklariert wird? Oder muss ich Setter für die Abhängigkeiten haben und die altmodische Art einstellen?
Brilliant! Hoffte, es wäre so einfach und es funktioniert. Danke Szpak !!! – shuttsy
In Ihrer letzten Codezeile können Sie schreiben: @InjectMocks ServiceCaller classUnderTest; – Vjeetje
Ja, aber bitte lesen Sie den Text in der Mitte meiner Antwort, um zu erfahren, warum ich normalerweise einen Konstruktor in Tests explizit aufrufen möchte. –