2014-02-12 86 views
2

我想嘗試使用嵌入式數據庫在Spring應用程序中測試我的DAO對象。不能在JUnit測試類中自動裝入Spring bean

在應用方面,我有這樣的標籤:

<jdbc:embedded-database id="dataSourceEmbedded" type="HSQL"> 
    <jdbc:script location="classpath:/embeddeddb/schema.sql" /> 
    <jdbc:script location="classpath:/embeddeddb/data.sql" /> 
</jdbc:embedded-database> 

我的JUnit測試類需要使用這個bean的工作:

import org.apache.log4j.Logger; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("classpath:/applicationContext.xml") 
public class PartnerDAOTest { 

    @Autowired 
    @Qualifier("dataSourceEmbedded") 
    public EmbeddedDatabase dataSourceEmbedded; 

@Test 
public void testSavePartner() { 

} 

} 

一切正常(創建 「dataSourceEmbedded」 豆),但是當我嘗試在PartnerDAOTest類中自動裝入它們Spring彈出此異常:

testSavePartner(sandbox.PartnerDAOTest): 創建名爲 'sandbox.PartnerDAOTest'的bean時出錯:注入 自動裝配依賴關係失敗;嵌套的例外是 org.springframework.beans.factory.BeanCreationException:無法 自動裝配領域:公共 org.springframework.jdbc.datasource.embedded.EmbeddedDatabase sandbox.PartnerDAOTest.dataSourceEmbedded; 嵌套的異常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:否 類型[org.springframework.jdbc.datasource.embedded.EmbeddedDatabase]發現 爲依賴 排位豆:預期至少1豆,其有資格作爲自動裝配 這種依賴的候選人。依賴註釋: {@ org.springframework.beans.factory.annotation.Autowired(必需=真), @ org.springframework.beans.factory.annotation.Qualifier(值= dataSourceEmbedded)}

什麼我的代碼有問題嗎?

+0

stacktrace是顯式的:*創建名稱爲「sandbox.PartnerDAOTest」的bean時出錯:**注入自動裝配依賴項失敗**。無法自動裝入字段:'public org.springframework.jdbc.datasource.embedded.EmbeddedDatabase' *。 –

+0

好的,謝謝,我可以讀取它的例外,但我確定一切正常(或者我不知道什麼是錯誤的),因爲bean被創建... – user2148736

+0

好吧,它不是,否則注入是正確的。我說的是,這個問題不能用你發佈的當前信息來檢查。 –

回答

0

正如@ M.Deinum在他的評論中發現:

沒有類型的豆EmbeddedDatabase有一個數據源。 嵌入式數據庫最終創建一個數據源,而不是嵌入式數據庫 。