单元测试报错NoSuchBeanDefinitionException

问题

  在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 目录下也新建一份,一般的配置文件,比如配置数据库连接的文件,是不需要这么搞的。

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

原文地址:https://www.cnblogs.com/acm-bingzi/p/test_no_such_bean.html

时间: 2024-11-05 23:30:09

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

[转]method initializationerror not found:JUnit4单元测试报错问题

method initializationerror not found:JUnit4单元测试报错问题 原文地址:http://blog.csdn.net/chenleixing/article/details/44257839 2015-03-14  分类: Maven-JUnit-JProfiler等工具(14)  版权声明:本文为博主原创文章,未经博主允许不得转载. 今天使用JUnit 4进行单元测试时,测试程序一直运行不起来,报method initializationerror not

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

今天单元测试如下的代码的时候发现项目老是报错: package com.yhb.jsxn.service; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.HashMap; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; impo

dao层单元测试报错CONDITIONS EVALUATION REPORT

0 环境 系统:win10 编辑器:IDEA 1 正文 1.1 起因 在controller层测试 测试url时没问题的 但是我单元测试就报错 1.2 排查 因为controller层 springbootapplication启动项目没问题 说明xml文件是没问题的 可能性很大的就是dao层没映射到 重点排查一下 打算debug的 突然想起来我在springbootapplication文件下添加了mappe包的包扫描 然而dao层的单元测试 没有启动springbootapplication

method initializationerror not found:JUnit4单元测试报错问题

今天使用JUnit 4进行单元测试时,测试程序一直运行不起来,报method initializationerror not found错误,如下: 网上说版本不对,我试了试,还是有这个问题,后来才知道,缺少了jar包,除了引入junit-4.12.jar之外,还要引入2个依赖jar包:hamcrest-core-1.3.rc2.jar,hamcrest-library-1.3.rc2.jar,提供大家免费的下载链接: junit-4.12.jar下载 hamcrest-library-1.3.

spring接入swagger后单元测试报错

2017-05-16 11:58:05.276 INFO 11268 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]58bf3596: startup date [Tue May 16 11:58:05 CST 2017]; root of context hierarchy 2017-05-16 11:58:06.452 INFO 11268 --- [

如何解决JUnit4单元测试报错 :method initializationerror not found

场景:用Junit4 运行测试时候,无法运行, 报method initializationerror not found.  看日志发现,是有重复的Feature  Step   Case冲突导致. 解决方案: 1.在解决代码冲突时候,需要确保冲突文件整理完毕,再Push 脚本代码,防止项目运行不成功. 2.去Feature文件把重复的Step删除即可.

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

1.不仅方法要public,类也要是public权限 2.修改Java文件字符集 没有完成,决定修改eclipse的默认字符集为gdk,需要使用时再修改为utf-8 原文地址:https://www.cnblogs.com/thyHome/p/8905076.html

SpringBoot报错:Failed to load ApplicationContext(javax.websocket.server.ServerContainer not available)

引起条件: WebSocket+单元测试,单元测试报错! 解决方法: SpringBootTest增加webEnvironment参数. https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications @SpringBootTest(webEnvironment = SpringBootT

单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法

using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 版本为9.0.0.0 的话,则使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且