我想将 Mockito 模拟对象注入到 Spring (3+) bean 中,以便使用 JUnit 进行单元测试。我的 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
值无效 启动应用程序上下文时不会发生错误。
最好的办法是:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
Update
在上下文文件中,此模拟必须在声明依赖于它的任何自动装配字段之前列出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)