我想嘗試使用嵌入式數據庫在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)}
什麼我的代碼有問題嗎?
stacktrace是顯式的:*創建名稱爲「sandbox.PartnerDAOTest」的bean時出錯:**注入自動裝配依賴項失敗**。無法自動裝入字段:'public org.springframework.jdbc.datasource.embedded.EmbeddedDatabase' *。 –
好的,謝謝,我可以讀取它的例外,但我確定一切正常(或者我不知道什麼是錯誤的),因爲bean被創建... – user2148736
好吧,它不是,否則注入是正確的。我說的是,這個問題不能用你發佈的當前信息來檢查。 –