2013-03-25 172 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