问题

  在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. iOS----------use_frameworks!

    1.https://segmentfault.com/a/1190000007076865 2.https://www.jianshu.com/p/8269e4cac48f 3.https://www ...

  2. C#事件与委托详解

    from https://www.cnblogs.com/sjqq/p/6917497.html C#事件与委托详解[精华 多看看] Delegatedelegate是C#中的一种类型,它实际上是一个 ...

  3. winserver-记录共享文件夹操作日志

    abstract 1.在共享文件夹上开启审计. 2.在日志中查看操作记录. 开启审计 共享文件夹属性 选择审计 添加审计用户 选择用户及审计事件 日志查看 运行eventvwr 在windowslog ...

  4. C语言面试基础知识整理

    一.预处理 1.什么是预编译?何时需要预编译? (1)预编译又称预处理,是做些代码文本的替换工作,即程序执行前的一些预处理工作.主要处理#开头的指令,如拷贝#include包含的文件代码.替换#def ...

  5. Lua rawget rawset newindex 函数定义和例子

    在绝大多数情况下,我们都不会用到rawget和rawset. 本文的运行环境:lua 5.3 for windows rawset 赋值操作 rawset是在设置值的过程,进行处理,比如:当某个值改变 ...

  6. [FTP]通过FileZilla在阿里云主机上搭建ftp服务器

    前一阵子租了一台服务器主机来玩,正好周末有时间研究了一下怎么搭建ftp server. 准备.首先要下载filezilla client和filezilla server, 下载地址: server: ...

  7. 使用 Flask-Cache 缓存给Flask提速

    https://blog.csdn.net/u013205877/article/details/78013289

  8. Linux基础学习:文件与目录管理

    目录与路径 目录的相关操作 几个特殊的目录: . :表示当前目录 .. :表示上一层目录 - :表示前一个工作目录 ~ :表示当前用户所在的主文件夹 ~account :表示account用户所在的主 ...

  9. Troubleshooting 'library cache: mutex X' Waits. (Doc ID 1357946.1)

    In this Document   Purpose   Troubleshooting Steps   What is a 'library cache: mutex X' wait?   What ...

  10. handsontable的基础应用

    handsontable是一款页面端的表格式交互插件,可以通过她加载显示表格内容,能够支持合并项.统计.行列拖动等. 同时,支持对加载后的表格页面的处理:添加/删除行/列,合并单元格等操作. 我在项目 ...