JUnit测试 spring 注入 问题报错

N_A_S_A 2018-03-30 03:08:09
Junit 代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:/config/srping/core-root-context.xml", "classpath*:/config/srping/orm-context.xml" })
public class moitorTest {
private MoitorServiceI moitorService;
public MoitorServiceI getMoitorService() {
return moitorService;
}
@Autowired
//@Resource(name="moitorService")
public void setMoitorService(MoitorServiceI moitorService) {
this.moitorService = moitorService;
}
@Test
public void test1() {
}

}


接口与实现类
@Service("moitorService")
public class MoitorServiceImpl implements MoitorServiceI {

private ParkingMoitorLogMapper parkingMoitorLogMapper;

@Override
public List<ParkingMoitorLog> getMoitorLogByParkingCodeAndStartTime(String parkingCode, String startTime) {

//return null;
return parkingMoitorLogMapper.getMoitorLogByParkingCodeAndStartTime(parkingCode, startTime);
}
}
public interface MoitorServiceI {
/**
* Description: 获取错误日志信息<br>
*
* @author <br>
* @taskId <br>
* @param ParkingCode
* <br>
* @param StartTime
* <br>
* @return <br>
*/
List<ParkingMoitorLog> getMoitorLogByParkingCodeAndStartTime(String parkingCode, String startTime);
}



spring 配置中 扫描路径
    <!-- service -->
<context:component-scan base-package="com.huibo.parking.moitor.service" />


启动之后报错 无法实现注入,找不到接口对应的实现类
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.huibo.parking.moitor.moitorTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.huibo.parking.moitor.moitorTest.setMoitorService(com.huibo.parking.moitor.service.MoitorServiceI); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.huibo.parking.moitor.service.MoitorServiceI] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:376)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:110)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:284)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.huibo.parking.moitor.moitorTest.setMoitorService(com.huibo.parking.moitor.service.MoitorServiceI); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.huibo.parking.moitor.service.MoitorServiceI] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:604)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)
... 26 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.huibo.parking.moitor.service.MoitorServiceI] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:993)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:863)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:775)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
... 28 more



我感觉 应该没有啥问题,看不出所以然,特此求助!

百度了 有人说接口 与实现类 同目录 我也是同目录下

...全文
335 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
N_A_S_A 2018-03-30
  • 打赏
  • 举报
回复
引用 3 楼 Appleyk 的回复:
你的是同一个目录下,没看到,我去 直接注入试试, @Autowired private MoitorServiceI moitorService 不行的话,检查下资源文件是不是关联上了
1.您说的同一个包下,接口与Impl类 都是在同一个 "com.huibo.parking.moitor.service" 包下的 2.直接注在类上面报错同样我试过了 3.XML上面文应该没有问题吧,Junit加载上下文就SPRING的配置就可 单测SERVICE层的。 我看过了错误信息,我理解为是扫描包路径下文件,找不到接口对应的实现类才导致注入service异常的。所以我目前感觉是扫描的问题,不知道对不对。 还请大神继续 帮忙看看
N_A_S_A 2018-03-30
  • 打赏
  • 举报
回复
引用 1 楼 yjsl__ 的回复:
MoitorServiceI @Service("moitorService")
HI 你的意思 我没看明白
appleyk 2018-03-30
  • 打赏
  • 举报
回复
你的是同一个目录下,没看到,我去 直接注入试试, @Autowired private MoitorServiceI moitorService 不行的话,检查下资源文件是不是关联上了
appleyk 2018-03-30
  • 打赏
  • 举报
回复
<!-- service --> <context:component-scan base-package="com.huibo.parking.moitor.serviceImpl" /> service和serviceImpl没有放在同一个包下,导致spring扫描的时候没有扫描Impl包,检查下
yjsl__ 2018-03-30
  • 打赏
  • 举报
回复
MoitorServiceI @Service("moitorService")

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧