簡體   English   中英

向具有@Autowired批注的bean注入模型

[英]inject a mockups to a bean that has @Autowired annotations

我有一個bean,其中有幾個注入了自動裝配注釋的bean(沒有限定符)。 現在,出於測試原因,我想向bean注入一些模擬,而不是自動裝配的模擬(某些DAO)。 有什么方法可以在不修改我的bean的情況下更改注入的bean? 我不喜歡在代碼中添加注解只是為了對其進行測試然后將其刪除以進行生產的想法。 我正在使用Spring 2.5。

Bean看起來像這樣:

@Transactional  
@Service("validaBusinesService")  
public class ValidaBusinesServiceImpl implements ValidaBusinesService {

    @Autowired  
    OperationDAO operationDAO;  
    @Autowired  
    BinDAO binDAO;  
    @Autowired  
    CardDAO cardDAO;  
    @Autowired  
    UserDAO userDAO;  

    ...
    ...
}

使用ReflectionTestUtils在單元測試中手動設置其他實現。

這實際上是依賴項注入的能力之一-與類如何注入其依賴項無關緊要。

恕我直言,您還應該提供設置器,以手動獲取依賴項。 然后,在單元測試用例中就不費吹灰之力了。 如果您不希望從包外部調用設置器,則可以將類的可見性降低為默認值。

如果要在集成測試方案中使用模擬,則可以創建模擬豆,如下所示:

<bean class="….Mockito" factory-method="mock">
  <constructor-arg value="….OperationDao" />
</bean>

這會將OperationDaoMockito模擬設置為Spring bean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM