向春豆中注入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
提交
取消