SprintBoot Junit Test @Autowired 注入失败原因之一问题解决

这篇博客讲述了在SpringBoot应用中进行JUnit测试时遇到的依赖注入异常问题。由于缺少指定的bean,导致测试类无法正常启动。通过将@SpringBootTest注解修改为@SpringBootTest(classes=ApplicationStart.class),指定项目的主启动类,解决了该问题。同时提醒,如果项目集成了WebSocket,需注意在测试前进行相应处理,避免冲突。
摘要由CSDN通过智能技术生成
@SpringBootTest
@RunWith(SpringRunner.class)
@SpringBootConfiguration
public class SpringBootJunitTest {
    @Autowired
    HostOperationService hostOperationServiceImpl;

    @Test
    public void test1() {
        
        System.out.println("this is test");
    }
}

当以上代码启动将会报如下错误:

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.UnsatisfiedDependencyException: Error creating bean with name 'SpringBootJunitTest': Unsatisfied dependency expressed through field 'hostOperationServiceImpl'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.host.service.HostOperationService' 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:643)

修改注解为:

@SpringBootTest(classes = ApplicationStart.class)

这个ApplicationStart.class就是对应你项目SpringBoot Main函数启动的这个类,而不是Application默认类!

备注:如果当前项目集成了websocket Junit 测试前必须先注释不然会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值