无法在JUnit测试类中自动装配Spring bean

时间:2014-02-12 15:28:49

标签: java spring junit hsqldb embedded-database

我想尝试使用嵌入式数据库在Spring应用程序中测试我的DAO对象。

在应用程序上下文中,我有这个标签:

<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”bean已创建)但是当我尝试在PartnerDAOTest类中自动装配它时,Spring会抛出此异常:

  

testSavePartner(sandbox.PartnerDAOTest):   使用名称创建bean时出错   'sandbox.PartnerDAOTest':注入   自动连接依赖失败;嵌套异常是   org.springframework.beans.factory.BeanCreationException:不能   autowire字段:public   org.springframework.jdbc.datasource.embedded.EmbeddedDatabase   sandbox.PartnerDAOTest.dataSourceEmbedded;   嵌套异常是   org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   合格的bean类型   找到[org.springframework.jdbc.datasource.embedded.EmbeddedDatabase]   对于依赖:预计至少有1个bean有资格作为autowire   这种依赖的候选人。依赖注释:   {@ org.springframework.beans.factory.annotation.Autowired(所需=真),   @ org.springframework.beans.factory.annotation.Qualifier(值= dataSourceEmbedded)}

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

正如@ M.Deinum在评论中注意到的那样:

  

没有类型为EmbeddedDatabase的bean有一个DataSource。   嵌入式数据库最终创建的数据源不是   EmbeddedDatabase。