当前位置: 首页 > 知识库问答 >
问题:

无法在JUnit测试类中自动连接spring bean

南宫才艺
2023-03-14

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

在应用程序上下文中,我有以下标记:

<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时出错:注入autowired依赖项失败;嵌套异常为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:需要至少一个符合此依赖项自动候选条件得bean.依赖项批注:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true),@org.SpringFramework.Beans.Factory.Annotation.Qualifier(value=DataSourceEmbedded)}

我的代码出了什么问题?

共有1个答案

叶鸿
2023-03-14

正如@M.deinum在评论中注意到的:

没有EmbeddedDatabase类型的bean存在一个DataSource。嵌入式数据库最终创建一个DataSource,而不是EmbeddedDatabase。

 类似资料:
  • 我有一个使用SpringMVC和SpringBoot的项目,我使用IntelliJ。我的项目如下: 我用注释服务实现。 我用以下内容注释了配置文件 在控制器中,我向服务注入 在测试类中,我使用相同的注释注入相同的服务: 我用以下方法注释测试类: 在控制器中,注入工作正常,但是在测试类中,IntelliJ说: 无法自动连线。找不到WelcomeService类型的beans。 当我运行测试时,它是有

  • 我有一个应用类 我有控制器课 并且,我想为Application test编写一个测试用例,以确保创建的实例类型为HelloController 但是,我在自动连接 hello控制器变量时遇到错误(找不到 hello 控制器类型的 bean)。根据我的理解,@SpringBootTest应该创建上下文并返回一个实例。我们不需要编写任何上下文 xml 或使用任何注释Config 类来获取实例。缺少了

  • 2014-12-20 15:35:52错误TestContextManager:334-允许TestExecutionListener[org.springframework.test.context.support.dependencyInjectionTestExecutionListener@5af97850]准备测试实例[com.amsb.bariz.base.test.usertest@

  • 我正在尝试创建一个Spring Boot测试类,它应该创建Spring上下文,并自动连接服务类以供我测试。 这就是我得到的错误: 原因:org。springframework。豆。工厂NoSuchBeanDefinitionException:没有“com”类型的合格bean。目瞪口呆。戈布斯。基础服务FileImportService'可用:至少需要1个符合autowire候选资格的bean。依

  • 问题内容: 这个问题类似于上一个问题。我正在尝试通过Spring-JUnit-Transactional测试之一进行hibernate会话,但是却遇到了以下异常: 这是我的JUnit类: 如果我a 并以编程方式获取我的代码(而不是在Spring XML中定义它),则每种方法都可以正常运行,如下所示: 但是,如果我像这样在Spring XML中定义我的示例,则可以使我的原始示例正常工作: 我的问题是

  • 我创建了使用jdbc处理DB的Dao存储库。 我在我的服务类中自动连接了这个存储库。 然后我尝试在测试类中自动连接我的服务类。 当我开始测试时,我得到下一个错误: 服务中构造函数的参数0需要找不到DaoImpl类型的bean。 我如何解决我的问题?