2013-03-25 129 views
0

我想在春季测试注入依赖性。集成测试:测试Autowired注释

我有一个类:

public SomeClass { 
    @Autowired 
    SomeBean bean ; 
    public SomeBean getBean(){ 
    return this.bean ; 
    } 
} 

我想这样的测试:

public SomeClassTest { 
    SomeClass someClass ; 
    @Before 
    public void setUp(){ 
    someClass = new SomeClass() ; 
    }        
    @Test public testBeanWired(){ 
    assertNotNull(someClass.getBean()) ;             
    }       
} 

我试图用一个测试配置文件ContextConfiguration,但测试失败,我不不想在测试中使用@Autowired,我想创建我的类的实例,并且这个bean是自动装配的。

回答

3

这只有在使用@Configuration注释bean和检测字节码时才有可能。否则,只有Spring创建的bean才会被自动装配。不是使用new创建的豆。因为Spring没有办法知道你创建了一个对象,并且它必须在其中注入一个依赖项。

这是依赖注入的一个基本原则:对象被容器实例化和注入,而不是由你注入。

+0

这就是我想测试的是容器在做它的工作吗?我有我的测试的上下文配置文件,其中声明了bean,我希望当我的类被实例化时,要注入的bean,在测试中。 – elaich 2013-03-25 23:02:26

+1

容器的工作是自动装载容器实例化的bean。你正在测试它是否自动装载你实例化的bean。所以测试会失败。不是因为容器没有完成它的工作,而是因为你使用new而不是从Spring上下文获取bean实例。 – 2013-03-25 23:05:43

+0

mmmmm的权利,所以我只需要标记'@Autowired SomeClass someClass'并且测试会通过,而且它会通过。 – elaich 2013-03-25 23:11:56