@Autowired
注释来注入的。我考虑使用
ReflectionTestUtils.setField
,但我希望注入的bean实例实际上是代理,因此不声明目标类的私有成员字段。我不希望为依赖项创建公共setter,因为这样我将纯粹为了测试而修改我的接口。我遵循了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
的值设置为无效值,启动应用程序上下文时不会出现错误。