在单元测试中设置类的资源注释字段

时间:2013-04-10 13:47:05

标签: spring

我上课了。

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

此类通过spring初始化。 Spring文件:test.xml

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



<bean id="Definitions" />

有没有办法在不使用spring的情况下在单元测试中将值插入私有字段模式(使用Resource注释)。我尝试通过Reflection设置私有变量,但这也没有帮助(可能是由于安全限制)。

即使使用弹簧, ApplicationContext context = new ClassPathXmlApplicationContext(“test.xml”); 它无法在Definitions bean中加载模式。访问模式时我得到“NullPointerException”。

2 个答案:

答案 0 :(得分:0)

为它添加一个setter:

public class Definitions{
    private Collection<String> schemas;

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

这是依赖注入的原则:在单元测试中手动注入依赖项,构造函数或setter注入。

答案 1 :(得分: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和3上工作正常,没有必要实现setter方法。