为了账号安全,请及时绑定邮箱和手机立即绑定

向春豆中注入Mockito模拟

向春豆中注入Mockito模拟

PIPIONE 2019-07-05 10:21:18
向春豆中注入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个赞

我有一个非常简单的解决方案,使用SpringJavaConfig和Mockito:

@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;
    }}


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 560 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信