2013-04-10 52 views
1

我有一個類。在單元測試中設置一個類的資源註釋字段

public class Definitions{ 
@Resource(name="schemas") 
private Collection<String> schemas; 
} 

這個類是通過spring初始化的。 春文件:的test.xml

<util:list id="schemas"> 
    <value>"A"</value> 
    <value>"b"</value> 
</util:list 



<bean id="Definitions" /> 

有沒有一些方法,我可以插入我的單元測試值私人領域的模式(與資源註釋)不使用的春天。我嘗試通過反射設置私有變量,但也沒有幫助(可能是由於安全限制)。

即使使用spring, ApplicationContext context = new ClassPathXmlApplicationContext(「test.xml」); 它無法在定義bean中加載模式。訪問模式時,我得到「NullPointerException」。

回答

0

添加二傳手它:

public class Definitions{ 
    private Collection<String> schemas; 

    @Resource(name="schemas") 
    public void setSchemas(Collection<String> schemas) { 
     this.schemas = schemas; 
    } 
} 

這是依賴注入的原則:你手動注入依賴,可見構造函數或setter注入,在單元測試中。

0

儘量做到以下幾點:

在你插入列表spring.xml:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> 
    <util:list id="listTest"> 
     <value>Valor 1</value> 
     <value>Valor 2</value> 
    </util:list> 
</beans> 

參考清單在代碼:

@Resource(name = "listTest") 
private List<String> listTest; 

我在這裏測試,它在Spring 4和Spring 3上運行良好,不需要實現setter方法。