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

目录
相关文章
|
8月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
918 0
|
4月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
961 2
|
4月前
|
人工智能 监控 供应链
51_安全性测试:提示注入与红队
在2025年,大型语言模型(LLM)已成为企业数字化转型的核心驱动力,但随之而来的安全挑战也日益严峻。数据显示,全球每月监测到超过50万次针对大语言模型的越狱攻击,这些攻击利用LLM的"黑箱"特性和自主生成能力,突破了传统安全边界。特斯拉自动驾驶系统因对抗性贴纸导致12%测试场景意外加速、加拿大航空聊天机器人误导票价信息被勒令退款、韩国初创公司因AI数据泄露被罚9.3万美元、谷歌Bard曾因错误信息导致市值缩水1000亿美元等真实案例,都凸显了LLM安全的重要性
|
8月前
|
人工智能 Java 测试技术
SpringBoot 测试实践:单元测试与集成测试
在 Spring Boot 测试中,@MockBean 用于创建完全模拟的 Bean,替代真实对象行为;而 @SpyBean 则用于部分模拟,保留未指定方法的真实实现。两者结合 Mockito 可灵活控制依赖行为,提升测试覆盖率。合理使用 @ContextConfiguration 和避免滥用 @SpringBootTest 可优化测试上下文加载速度,提高测试效率。
429 5
|
7月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
310 0
|
机器学习/深度学习 人工智能 自然语言处理
MarS:微软开源金融市场模拟预测引擎,支持策略测试、风险管理和市场分析
MarS 是微软亚洲研究院推出的金融市场模拟预测引擎,基于生成型基础模型 LMM,支持无风险环境下的交易策略测试、风险管理和市场分析。
513 8
MarS:微软开源金融市场模拟预测引擎,支持策略测试、风险管理和市场分析
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
378 10
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
203 11
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
237 10

热门文章

最新文章