SpringBoot junit测试的时候获取不到bean
记录一下,今天在使用springboot做junit测试的获取不到bean
具体报错
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘com.scmcc.feemanger.FeemangerApplicationTests ': Unsatisfied dependency expressed through field ‘userModelService' ; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.scmcc.service.UserModelService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: { @org .springframework.beans.factory.annotation.Autowired(required= true )} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java: 596 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java: 90 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java: 374 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java: 1411 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java: 391 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java: 119 ) ~[spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java: 83 ) ~[spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java: 44 ) ~[spring-boot-test-autoconfigure- 2.1 . 5 .RELEASE.jar: 2.1 . 5 .RELEASE] at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java: 246 ) ~[spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java: 227 ) [spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$ 1 .runReflectiveCall(SpringJUnit4ClassRunner.java: 289 ) [spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java: 12 ) [junit- 4.12 .jar: 4.12 ] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java: 291 ) [spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java: 246 ) [spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java: 97 ) [spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.junit.runners.ParentRunner$ 3 .run(ParentRunner.java: 290 ) [junit- 4.12 .jar: 4.12 ] at org.junit.runners.ParentRunner$ 1 .schedule(ParentRunner.java: 71 ) [junit- 4.12 .jar: 4.12 ] at org.junit.runners.ParentRunner.runChildren(ParentRunner.java: 288 ) [junit- 4.12 .jar: 4.12 ] at org.junit.runners.ParentRunner.access$ 000 (ParentRunner.java: 58 ) [junit- 4.12 .jar: 4.12 ] at org.junit.runners.ParentRunner 2 . e v a l u a t e ( P a r e n t R u n n e r . j a v a : 268 ) [ j u n i t − 4.12 . j a r : 4.12 ] a t o r g . s p r i n g f r a m e w o r k . t e s t . c o n t e x t . j u n i t 4 . s t a t e m e n t s . R u n B e f o r e T e s t C l a s s C a l l b a c k s . e v a l u a t e ( R u n B e f o r e T e s t C l a s s C a l l b a c k s . j a v a : 61 ) [ s p r i n g − t e s t − 5.1 . 7 . R E L E A S E . j a r : 5.1 . 7 . R E L E A S E ] a t o r g . s p r i n g f r a m e w o r k . t e s t . c o n t e x t . j u n i t 4 . s t a t e m e n t s . R u n A f t e r T e s t C l a s s C a l l b a c k s . e v a l u a t e ( R u n A f t e r T e s t C l a s s C a l l b a c k s . j a v a : 70 ) [ s p r i n g − t e s t − 5.1 . 7 . R E L E A S E . j a r : 5.1 . 7 . R E L E A S E ] a t o r g . j u n i t . r u n n e r s . P a r e n t R u n n e r . r u n ( P a r e n t R u n n e r . j a v a : 363 ) [ j u n i t − 4.12 . j a r : 4.12 ] a t o r g . s p r i n g f r a m e w o r k . t e s t . c o n t e x t . j u n i t 4 . S p r i n g J U n i t 4 C l a s s R u n n e r . r u n ( S p r i n g J U n i t 4 C l a s s R u n n e r . j a v a : 190 ) [ s p r i n g − t e s t − 5.1 . 7 . R E L E A S E . j a r : 5.1 . 7 . R E L E A S E ] a t o r g . j u n i t . r u n n e r . J U n i t C o r e . r u n ( J U n i t C o r e . j a v a : 137 ) [ j u n i t − 4.12 . j a r : 4.12 ] a t c o m . i n t e l l i j . j u n i t 4 . J U n i t 4 I d e a T e s t R u n n e r . s t a r t R u n n e r W i t h A r g s ( J U n i t 4 I d e a T e s t R u n n e r . j a v a : 68 ) [ j u n i t − r t . j a r : n a ] a t c o m . i n t e l l i j . r t . e x e c u t i o n . j u n i t . I d e a T e s t R u n n e r 2 .evaluate(ParentRunner.java: 268 ) [junit- 4.12 .jar: 4.12 ] at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java: 61 ) [spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java: 70 ) [spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.junit.runners.ParentRunner.run(ParentRunner.java: 363 ) [junit- 4.12 .jar: 4.12 ] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java: 190 ) [spring-test- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.junit.runner.JUnitCore.run(JUnitCore.java: 137 ) [junit- 4.12 .jar: 4.12 ] at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java: 68 ) [junit-rt.jar:na] at com.intellij.rt.execution.junit.IdeaTestRunner 2 .evaluate(ParentRunner.java: 268 )[junit− 4.12 .jar: 4.12 ]atorg.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java: 61 )[spring−test− 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE]atorg.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java: 70 )[spring−test− 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE]atorg.junit.runners.ParentRunner.run(ParentRunner.java: 363 )[junit− 4.12 .jar: 4.12 ]atorg.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java: 190 )[spring−test− 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE]atorg.junit.runner.JUnitCore.run(JUnitCore.java: 137 )[junit− 4.12 .jar: 4.12 ]atcom.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java: 68 )[junit−rt.jar:na]atcom.intellij.rt.execution.junit.IdeaTestRunnerRepeater.startRunnerWithArgs(IdeaTestRunner.java: 47 ) [junit-rt.jar:na] at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java: 242 ) [junit-rt.jar:na] at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java: 70 ) [junit-rt.jar:na] Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.scmcc.service.UserModelService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: { @org .springframework.beans.factory.annotation.Autowired(required= true )} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java: 1655 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java: 1214 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java: 1168 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java: 593 ) ~[spring-beans- 5.1 . 7 .RELEASE.jar: 5.1 . 7 .RELEASE] … 28 common frames omitted Process finished with exit code - 1 |
原因是springboot的项目目录有问题,创建的类必须要放在主类的目录下面,问题解决,改正后的目录结构:
解决方案
原因是springboot的项目目录有问题,创建的类必须要放在主类的目录下面,问题解决~
SpringBoot测试类:Could not autowire. No beans of ‘BrandService‘ type found
如题,最近在做项目的过程中发现
SpringBootTest测试类中的BrandService 无法注入。
在idea中,brandService是爆红的。
解决方案
spring boot测试类 包名与main下application.class启动类的包名默认要一致。
即下图中的两个包名都是com.honyelchak.gulimall.product
以上为个人经验,希望能给大家一个参考,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/221750/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)