的Java類(稱爲ServiceCaller
)我要測試的多個嘲笑了這一點:如何注入相同的接口
@Autowired @Qualifier(value="serviceA")
SomeService serviceA;
@Autowired @Qualifier(value="serviceB")
SomeService serviceB;
(有一個doWork()
方法,將檢查的條件,並呼籲A或B) 。
如何將每個服務的模擬注入相應的變量?
我Junit有這樣的:
@InjectMocks ServiceCaller classUnderTest = new ServiceCaller();
@Mock SomeService mockServiceA;
@Mock SomeService mockServiceB;
然而,當我跑我的測試,以檢查服務A/B正確的情況下叫,我得到空指針作爲模擬尚未注入。
顯然它是因爲在同一個接口上的多個依賴關係(SomeService
)。有沒有一種方法可以在聲明模擬服務時指定限定符?還是我需要爲依賴關係設置setter並設置舊式的方式?
太棒了!希望它可以像這樣簡單並且有效。謝謝Szpak! – shuttsy
在你寫的最後一行代碼中: @InjectMocks ServiceCaller classUnderTest; – Vjeetje
是的,但請閱讀我的答案中的文字,以瞭解爲什麼我通常更願意明確地在測試中調用構造函數。 –