2016-05-13 56 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); 
    }