springboot测试环境无法注入bean问题分析及解决方案

简介: springboot测试环境无法注入bean问题分析及解决方案

正文


问题描述:无法注入bean


111.png


问题分析:


1.查看@SpringBootTest 源码


@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@BootstrapWith(SpringBootTestContextBootstrapper.class)
public @interface SpringBootTest {
    /**
     * explicit classes are defined the test will look for nested
     * 这句话的意思是 如果没有指定class的情况下,会去该测试类所在的包及子包下面搜索启动类,如果没有则注入为空,
     * 如果指定class,则会将扫描到的类组件加载到测试环境
     */
    Class<?>[] classes() default {};
}


2.增加@RunWith注解


RunWith就是一个运行器


@RunWith(SpringJUnit4ClassRunner.class) 运行spring测试环境


这里,我们使用@RunWith(SpringRunner.class)


补:小伙伴可能会问了,这里不是应该使用SpringJUnit4ClassRunner?为什么使用SpringRunner?


//这里使用SpringRunner没毛病
public final class SpringRunner extends SpringJUnit4ClassRunner {
    public SpringRunner(Class<?> clazz) throws InitializationError {
        super(clazz);
    }
}


正确写法


@SpringBootTest(classes = {QueryApplication.class})
@RunWith(SpringRunner.class)
@Slf4j
public class QueryApplicationTest {
    @Autowired
    private DataSource dataSource;
    @Test
    public void test() {
        log.info(dataSource.toString());
    }
}


:如果与启动类是同一个包及子包,就没有必要指定@SpringBootTest的classes

目录
相关文章
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
1437 0
|
11月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
1214 3
|
11月前
|
人工智能 监控 供应链
51_安全性测试:提示注入与红队
在2025年,大型语言模型(LLM)已成为企业数字化转型的核心驱动力,但随之而来的安全挑战也日益严峻。数据显示,全球每月监测到超过50万次针对大语言模型的越狱攻击,这些攻击利用LLM的"黑箱"特性和自主生成能力,突破了传统安全边界。特斯拉自动驾驶系统因对抗性贴纸导致12%测试场景意外加速、加拿大航空聊天机器人误导票价信息被勒令退款、韩国初创公司因AI数据泄露被罚9.3万美元、谷歌Bard曾因错误信息导致市值缩水1000亿美元等真实案例,都凸显了LLM安全的重要性
2314 0
|
人工智能 Java 测试技术
SpringBoot 测试实践:单元测试与集成测试
在 Spring Boot 测试中,@MockBean 用于创建完全模拟的 Bean,替代真实对象行为;而 @SpyBean 则用于部分模拟,保留未指定方法的真实实现。两者结合 Mockito 可灵活控制依赖行为,提升测试覆盖率。合理使用 @ContextConfiguration 和避免滥用 @SpringBootTest 可优化测试上下文加载速度,提高测试效率。
650 5
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
473 0
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
605 10
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1716 23
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
2364 24