向春豆中注入Mockito模擬為了使用JUnit進行單元測試,我想將一個Mockito模擬對象注入到Spring(3+)bean中。當前,通過使用@Autowired私有成員字段上的注釋。我考慮過用ReflectionTestUtils.setField但是,我希望注入的bean實例實際上是一個代理,因此不聲明目標類的私有成員字段。我不希望為依賴項創建一個公共設置程序,因為那時我將純粹為了測試目的而修改我的接口。我跟蹤了一些建議由Spring社區提供,但是模擬沒有被創建,自動連接失敗:<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" /></bean>我目前遇到的錯誤如下:...Caused by: org...NoSuchBeanDefinitionException:
No matching bean of type [com.package.Dao] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {
@org...Autowired(required=true),
@org...Qualifier(value=dao)
}at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901)at org...DefaultListableBeanFactory.
doResolveDependency(D...y.java:770)如果我設置constructor-arg值為無效的值,在啟動應用程序上下文時不會發生錯誤。
3 回答

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
@Configurationpublic class TestConfig { @Mock BeanA beanA; @Mock BeanB beanB; public TestConfig() { MockitoAnnotations.initMocks(this); //This is a key } //You basically generate getters and add @Bean annotation everywhere @Bean public BeanA getBeanA() { return beanA; } @Bean public BeanB getBeanB() { return beanB; }}
添加回答
舉報
0/150
提交
取消