2017-12-02 122 views
2

我想在我的Spring Boot應用程序中執行單個服務的集成測試。所以我想只有這個服務,並且它的依賴性被添加到測試應用程序上下文中。是否可以在上下文配置中指定一個@Component類,因此它的依賴性會自動解析?

假設我有不同封裝AB兩班(AB參考)標有@Component註解。當我運行該應用程序時,@SpringBootApplication找到我所有的bean,並將它們添加到上下文中,並隱含@ComponentScan

在我的測試配置中,我只想指定一個類A並使Spring Boot解決它的依賴關係(B)並將其添加到上下文中。

是否可以使用Spring Boot 2或對我最合適的選項將創建一個單獨的@Configuration所需的類明確聲明? (實際上有超過2個,這就是爲什麼我問)

+1

問題是,依賴注入的關鍵是'A'不一定知道它會得到什麼'B'的實現,所以Spring無法過渡地導入'@ Component' bean。我經常使用單獨的測試'@ Configuration'類(並且很多時候,如果使用構造函數注入,您可以完全不需要Spring)。 – chrylis

回答

2

在我的測試配置,我想只能指定一個類A,讓春天的引導來解決它的依賴(B),並把它添加到上下文。

不,不幸的是不可能的,因爲Spring不知道如何找到依賴關係和/或實際需要的具體類型。

是否可以使用Spring Boot 2或最適合我的選項創建一個單獨的@Configuration,並明確聲明所需的類?

是的,您可以爲此目的聲明專門的測試@Configuration類;但是,您可能發現在測試類中簡單重用一組配置類,以便從Spring TestContext框架中的上下文緩存支持中受益,將會更有益處。

+0

用於上下文緩存的Postrgres和常用配置的TestContainers,還使用@Conditional和配置文件禁用了一些bean,謝謝:) – Derp

相關問題