首页 文章

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

提问于
浏览
2

我想尝试使用嵌入式数据库来测试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):创建名为'sandbox.PartnerDAOTest'的bean时出错:注入自动连接的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:public org.springframework.jdbc.datasource.embedded.EmbeddedDatabase sandbox.PartnerDAOTest.dataSourceEmbedded;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型为[org.springframework.jdbc.datasource.embedded.EmbeddedDatabase]的限定bean依赖:预期至少有1个bean符合此依赖关系的autowire候选者 . 依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true),@ org.springframework.beans.factory.annotation.Qualifier(value = dataSourceEmbedded)}

What is wrong with my code?

1 回答

  • 0

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

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

相关问题