2

我有一堂课。

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。我尝试通过反射使用设置私有变量,但这也没有帮助(可能是由于安全限制)。

即使使用spring,ApplicationContext context = new ClassPathXmlApplicationContext("test.xml"); 它无法在定义 bean 中加载模式。访问模式时出现“NullPointerException”。

4

2 回答 2

1

为它添加一个设置器:

public class Definitions{
    private Collection<String> schemas;

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

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

于 2013-04-10T14:20:58.040 回答
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 方法。

于 2014-04-22T14:46:48.273 回答