问题

  在SpringBoot项目开发时,使用单元测试来运行一个Service,发现调用的一个Bean就是找不到,报错为:

  org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.gaosiedu.gsl.mq.base.MqSendService' available: expected at least 1 bean which qualifies as autowire candidate.

  这个意思大概翻译是:找不到符合条件的bean。

  但是我明确的定义了这个bean,只是用的不是注解的方式,而是用的xml 的方式。

  在springboot项目的main类里,添加了注解 @ImportResource,在对应的配置文件里添加了这个bean的定义,如下:

@ImportResource({
  "classpath:*dubbo-*-spring.xml",
  "classpath:*mq-*-spring.xml"
})

解决

  最终发现,原因是@ImportResource注解中指定的classpath,在服务器中正式运行的时候,和单元测试的时候,指的不是同一个地方

  在服务器正式运行时,需要在文件夹类型为【Sources Root】的文件夹下
  在单元测试时,需要在文件夹类型为【Test Sources Root】的文件夹下

  如何设置文件夹类型呢?只需要在文件夹上右键,选择【Mark Directory as】,如图:

  

  正常情况下,main/resources 是【Sources Root】类型,test/resources是【Test Sources Root】test类型
  我之前只是在main/resources 下新建了配置文件,所以才会报错。当把对应的两个配置文件拷贝到test/resources 目录下就没问题了

  PS:只有明确写明了classpath: 的配置文件才需要在test 目录下也新建一份,一般的配置文件,比如配置数据库连接的文件,是不需要这么搞的。

  原创文章,欢迎转载,转载请注明出处!

单元测试报错NoSuchBeanDefinitionException的更多相关文章

  1. junit单元测试报错Failed to load ApplicationContext,但是项目发布到tomcat浏览器访问没问题

    junit单元测试报错Failed to load ApplicationContext,但是项目发布到tomcat浏览器访问没问题,说明代码是没问题的,配置也没问题.开始时怀疑是我使用junit版本 ...

  2. spring单元测试报错:Failed to load ApplicationContext 的解决方法

    使用idea 配置单元测试之后,配置完spring的注解@junit 和@runer 之后 一直报错. 最后发现是默认使用jdk1.8引起的,使用jdk1.7即可.

  3. 【关于使用SpringJUnit4ClassRunner单元测试报错问题】

    今天单元测试如下的代码的时候发现项目老是报错: package com.yhb.jsxn.service; import java.text.SimpleDateFormat; import java ...

  4. scala使用FunSpec进行单元测试报错

    遇到比较奇怪的问题,mvn项目中的main函数可以正常运行,但是test阶段出错,报错信息如下: Exception in thread "main" java.lang.NoCl ...

  5. dao层单元测试报错CONDITIONS EVALUATION REPORT

    0 环境 系统:win10 编辑器:IDEA 1 正文 1.1 起因 在controller层测试 测试url时没问题的 但是我单元测试就报错 1.2 排查 因为controller层 springb ...

  6. 单元测试 报错 org.junit.runners.model.InvalidTestClassError: Invalid test class 'com.example.xxx' 解决

    1.前言 很奇怪 ,单元测试正常执行,但是结束后会报错 org.junit.runners.model.InvalidTestClassError: Invalid test class 'com.e ...

  7. 【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题

    今天是用JUnit测试一段代码,报错method initializationerror not found::出现如下问题: 双击这个就显示出现如下的错误: 查询网上,说是junit版本的问题: 那 ...

  8. Junit4单元测试报错

    转载博客:http://www.cnblogs.com/sxdcgaq8080/p/5649819.html 今天是用JUnit测试一段代码,报错method initializationerror ...

  9. Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]

    1 报错描述 java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. Specify @Boot ...

随机推荐

  1. Cayley图数据库的可视化(Visualize)

    引入   在文章Cayley图数据库的简介及使用中,我们已经了解了Cayley图数据库的安装.数据导入以及进行查询等.   Cayley图数据库是Google开发的开源图数据库,虽然功能还没有Neo4 ...

  2. 利用tornado实现表格文件预览

    项目介绍   本文将介绍笔者的一个项目,主要是利用tornado实现表格文件的预览,能够浏览的表格文件支持CSV以及Excel文件.预览的界面如下:   下面我们将看到这个功能是如何通过tornado ...

  3. 简简单单的Vue4(vue-cie@3.x,vue’Debug[调试],vue‘sHttp)

    既然选择了远方,便只顾风雨兼程! __HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 vue-cli@3.x 创建项目 Vue的Debug(调试) Vue的Http请求 提 ...

  4. Java开发笔记(八十三)利用注解技术检查空指针

    注解属于比较高级的Java开发技术,前面介绍的内置注解专用于编译器检查代码,另外一些注解则由各大框架定义与调用,像Web开发常见的Spring框架.Mybatis框架,Android开发常见的Butt ...

  5. 003. 什么是 正向代理 & 反向代理

    正向代理: 客户端的代理: 反向代理: 服务端的代理:

  6. Linux硬盘文件分析取证(SSH过的IP)

    在线靶场: https://www.mozhe.cn 背景介绍 某运维人员发现服务器最近被一个IP连接过SSH,请找到连接服务器SSH的IP. 实训目标 1.了解Linux备份方式: 2.了解Acce ...

  7. Android为TV端助力 电影栏目移动到底部或者顶部时抖动动画

    1 移动到底部上下抖动ObjectAnimator animatorX = ObjectAnimator.ofFloat(holder.itemView,"translationX" ...

  8. springboot模块

    1.web <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  9. springCloud feign使用/优化总结

    基于springCloud Dalston.SR3版本 1.当接口参数是多个的时候 需要指定@RequestParam 中的value来明确一下. /** * 用户互扫 * @param uid 被扫 ...

  10. MyDAL - 引用类型对象 .DeepClone() 深度克隆[深度复制] 工具 使用

    索引: 目录索引 一.API 列表 .DeepClone() 用于 Model / Entity / ... ... 等引用类型对象的深度克隆 特性说明 1.不需要对对象做任何特殊处理,直接 .Dee ...