2016-05-13 57 views
1

我有一个用户定义的注释类如下。JUnit Mocking Bean是@autowired用户定义注释

@Target({ TYPE, METHOD, PARAMETER, FIELD }) 
@Retention(RUNTIME) 
@Qualifier 
public @interface Message 
{ 
    Dest value(); 

    public static enum Target { DEFAULT, TEST } 
} 

我以下面的方式使用这个注释。

@Component 
public class ProcessorBean implements Processor 
{ 

    @Autowired @Message(Message.Target.DEFAULT) Producer<Object, Object> messageProducer; 

    @Autowired 
    MessageConfig messageConfig; 

不确定,如何创建ProcessorBean的bean并注入Producer。

@Bean(name="DEFAULT") 
     public Producer<Object, Object> producer() { 
      return mock(Producer.class); 
     } 

我试过上面的一个,它引发了依赖性错误。

谢谢

+0

“@ Message”注释的用途是什么?当您使用@ Message标注批注字段时,您想完成什么? – Jesper

+0

嗨,这是由于其他原因,我刚刚更名为发布目的。试图了解这是否可以注入单元测试。 – user1578872

回答

0

我自己找到了解决方案。希望这会对其他人有所帮助。

@Message(Message.Target.DEFAULT) 
     @Bean 
    public Producer<Object, Object> producer() { 
     return mock(Producer.class); 
    }