当前位置: 首页 > news >正文

springboot工程测试临时数据修改技巧

目录

properties临时属性测试注入

args临时参数测试注入

bean配置类属性注入(@Import)


@SpringBootTest是一个注解,用于测试Spring Boot应用程序。它可用于指示Spring Boot测试应用程序的启动点,并为测试提供一个可用的Spring应用程序上下文。它还提供了自动配置的功能,可以将依赖注入到测试类中。

properties临时属性测试注入

测试过程本身并不是一个复杂的过程,但是很多情况下测试时需要模拟一些线上情况,或者模拟一些特殊情况。如果当前环境按照线上环境已经设定好了,例如是下面的配置

servers:ip-address: 192.168.0.1port: 2345dataSize: 8

但是你现在想测试对应的兼容性,需要测试如下配置

servers:ip-address: 192.168.0.1port: 2345dataSize: 4

 这个时候我们能不能每次测试的时候都去修改源码application.yml中的配置进行测试呢?显然是不行的。每次测试前改过来,每次测试后改回去,这太麻烦了。我们需要在测试环境中创建一组临时属性,去覆盖我们源码中(application.yml中)设定的属性。

这个时候就可以使用注解@SpringBootTest添加属性来模拟临时属性

//properties属性可以为当前测试用例添加临时的属性配置
@SpringBootTest(properties = {"servers.dataSiz=4"})
public class PropertiesAndArgsTest {@Value("${servers.dataSiz}")private String dataSiz;@Testvoid testProperties(){System.out.println(dataSiz);}
}

args临时参数测试注入

启动springboot程序时,通过命令行参数也可以设置属性值。测试时也可以进行修改属性

//args属性可以为当前测试用例添加临时的命令行参数
@SpringBootTest(args={"--test.prop=testValue2"})
public class PropertiesAndArgsTest {@Value("${test.prop}")private String msg;@Testvoid testProperties(){System.out.println(msg);}
}

args属性配置优先于properties属性配置加载。 

五种配置的优先级的先后顺序为

  • 1 命令行参数 (格式:–key=value)
  • 2 Java系统属性配置 (格式: -Dkey=value)
  • 3 application.properties
  • 4 application.yml
  • 5 application.yaml

bean配置类属性注入(@Import)

一个spring环境中可以设置若干个配置文件或配置类,若干个配置信息可以同时生效。 需求就是在测试环境中再添加一个配置类,然后启动测试环境时,生效此配置就行了。

Import注解在具体的测试中导入临时的配置,例如测试用例,方便测试过程,且上述配置不影响其他的测试类环境  

步骤①:在测试包test中创建专用的测试环境配置类(不要道java目录添加,那样子对源码进行了修改了)

@Configuration
public class MsgConfig {@Beanpublic String msg(){return "bean msg";}
}

步骤②:在启动测试环境时,导入测试环境专用的配置类,使用@Import注解即可实现

@SpringBootTest
@Import({MsgConfig.class})
public class ConfigurationTest {@Autowiredprivate String msg;@Testvoid testConfiguration(){System.out.println(msg);}
}

@Import注解在具体的测试中导入临时的配置,例如测试用例,方便测试过程,且上述配置不影响其他的测试类环境  

@Import注解提供了三种用法

1、@Import一个普通类 spring会将该类加载到spring容器中

2、@Import一个类,该类实现了ImportBeanDefinitionRegistrar接口,在重写的registerBeanDefinitions方法里面,能拿到BeanDefinitionRegistry bd的注册器,能手工往beanDefinitionMap中注册 beanDefinition

3、@Import一个类 该类实现了ImportSelector 重写selectImports方法该方法返回了String[]数组的对象,数组里面的类都会注入到spring容器当中

相关文章:

springboot工程测试临时数据修改技巧

目录 properties临时属性测试注入 args临时参数测试注入 bean配置类属性注入(Import) SpringBootTest是一个注解,用于测试Spring Boot应用程序。它可用于指示Spring Boot测试应用程序的启动点,并为测试提供一个可用的Spring应用…...

Echarts 清空画布空白以及鼠标悬浮提示信息格式化问题

清空画布用clear()会导致图表空白 const option1 = this.myEchart1.getOption()const option2 = this.myEchart2.getOption()const option3 = this.myEchart3.getOption()// 清空数据option1.series = []option1.xAxis[0].data = []option2.series = []option2.xAxis[0].data …...

数据结构入门:栈

目录 前言 1. 栈 1.1栈的概念及结构 1.2 栈的实现 1.2.1 栈的定义 1.2.2 栈的初始化 1.2.3 入栈 1.2.4 出栈 1.2.5 栈的元素个数 1.2.6 栈顶数据 1.2.7 栈的判空 2.栈的应用 2.1 题目一:括号匹配 2.1.1 思路 2.1.2 分析 2.1.3 题解 总结 前言 无论你是计算机科学专…...

《UNUX环境高级编程》(14)高级I/O

1、引言 2、 非阻塞I/O 系统调用分为两类:低速系统调用和其他系统调用。低速系统调用是可能会使进程永远阻塞的一类系统调用,包括: 如果某些文件类型(如读管道、终端设备和网络设备)的数据并不存在,读操作…...

第5讲:如何构建类的方法

【分享成果,随喜正能量】在这个社会上,对别人好一点,多站在别人的角度考虑,不要为小事争执,不要取笑他人,不要在别人背后嚼舌根,更不能逼人太甚。凡事退一步,对你有好处。。 《VBA中…...

【TypeScript】TS接口interface类型(三)

【TypeScript】TS接口interface类型(三) 【TypeScript】TS接口interface类型(三)一、接口类型二、实践使用2.1 常规类型2.2 设置属性只读 readonly2.3 设置索引签名2.4 设置可选属性2.5 函数类型接口 一、接口类型 TypeScript中的…...

Python web实战之Django 的 RESTful API 设计详解

关键词: Python, Web 开发, Django, RESTful API 1 API的一些事儿 1.1 什么是API? API是应用程序编程接口(Application Programming Interface)的缩写。它是一种定义了不同软件组件之间交互方式的规范。API允许不同的应用程序之间进行通信和…...

Python 程序设计入门(014)—— Python 的 Lambda 函数(匿名函数)

Python 程序设计入门(014)—— Python 的 Lambda 函数(匿名函数) 目录 Python 程序设计入门(014)—— Python 的 Lambda 函数(匿名函数)一、匿名函数的定义二、匿名函数的特征三、匿…...

【MySQL系列】表约束的学习

「前言」文章内容大致是MySQL的表的约束。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、MySQL表的约束1.1 空属性1.2 默认值(default)1.3 列描述(comment)1.4 zerofill1.5 主键(primary ke…...

低功耗LoRaWAN国产低功耗LoRa+RF射频前端芯片XD6500S

目录 典型应用XD6500S简介芯片特性 LoRa系列选型参考 LoRa是为低数据速率、远距离距离和超低功耗而优化的扩频协议,用于LPWAN应用程序的通信。 典型应用 一、智慧农业   智慧农业大田解决方案利用传感设备、自动化控制设备、气象站实时监测采集田间土壤墒情、气象…...

【基础IO】文件系统 {磁盘的物理结构,存储结构,逻辑结构;CHS 和 LBA 寻址方式;磁盘分区和块组;文件inode;软硬链接}

文件系统 文件分为: 内存文件:被进程打开的文件,文件被加载到内存中供进程快速读写。磁盘文件:没有被打开的文件,保存在磁盘上。磁盘文件被分门别类的存储和管理,用于支持更好的存取。 提示: …...

全角字符和半角字符

全角字符的由来 全角符号是双字节中文编码的历史遗留问题。当年在纯文本的界面中,为了让西文和中日韩的方块字对齐,就让西文字母、数字和标点也占用一个汉字的视觉空间,并使用 2 个字节存储。后来,其中的一些全角字符因为比较有用…...

【java】【经验】java: 错误: 不支持发行版本 6

前言:配置过maven之后,发现原来的一些项目运行提示java: 错误: 不支持发行版本 6或者java: 错误: 不支持发行版本 5,主要原因:是因为项目使用的Java版本和安装的Java版本不符合 目录 1 设置项目java版本 2 设置模块版本 3 set…...

Spring Boot3.0(四):Thymeleaf 使用详解

Thymeleaf 介绍 简单说,Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较与其他的模板引擎,它有如下三个极吸引人的特点: 1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以…...

杨辉三角【Java二维数组】

这个代码中,我们定义了一个二维数组nums来存储杨辉三角的每一个数字。在for循环中,我们初始化每一行的第一个和最后一个数字,并且根据上一行的数字来计算出中间的数字。 接着,我们使用两个嵌套的for循环来输出杨辉三角。第一个循…...

解决SpringBoot服务返回数据存在$ref $.data等相关问题

1、场景 ​ 在日常的开发中,我们数据接口返回数据使用了FastJson序列化数据,当返回一个数据list时候出现" r e f " " ref" " ref"".data" 等类似乱码一样的数据,当时我比较匪夷所思,我写…...

【iOS安全】开启任意app的WebView远程调试

参考:https://mp.weixin.qq.com/s/bNKxQaVrPaXsZ5BPbsXy7w (来自周智老师的公众号) 概述 Safari 有一个内置的前端调试器, 在iPhone通过局域网或者USB连接MacBook 并启用Safari 远程调试之后,前端调试器默认情况下对…...

windows下 java程序无窗口启动、无窗口启动java -jar

创建一个.bat文件,其他照抄,注意一下你自己的jar包路径和日志路径:例:java -jar C:\data\operation-1.0-SNAPSHOT.jar > C:\data\log.log 2>&1 & ------------文件内容 echo off %1 mshta vbscript:CreateObject(…...

锦程消费金融业务生变:App下架,部分自营信贷暂停

来源 | 镭射财经(leishecaijing) 被誉为消金房抵一哥的锦程消费金融,调整旗下自营信贷业务,展业回归房抵场景。 「镭射财经」独家获悉,锦程消费金融已暂停部分自营小额信贷业务,旗下锦囊贷App已经下架&am…...

Python爬虫在框架下的合规操作与风险控制

大家好!作为一名专业的爬虫代理供应商,我今天要和大家分享一些关于Python爬虫在法律框架下的合规操作与风险控制的知识。随着互联网的发展,数据爬取在商业和研究领域扮演着重要的角色,但我们也必须遵守相关法律和规定,…...

Ostrakon-VL-8B构建智能相册:基于自然语言的照片检索与回忆生成

Ostrakon-VL-8B构建智能相册:基于自然语言的照片检索与回忆生成 你有没有过这样的经历?手机里存了几千张照片,想找一张去年夏天在山上拍的照片,却要翻上十几分钟,甚至最后也没找到。或者,看着一堆旅行照片…...

启动器故障排除指南:Java环境修复与第三方冲突解决

启动器故障排除指南:Java环境修复与第三方冲突解决 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 当使用Minecraft启动器安装Forge时遇到"java.lang.NoC…...

PyTorch 2.8镜像参数详解:CUDA 12.4驱动550.90.07环境兼容性避坑指南

PyTorch 2.8镜像参数详解:CUDA 12.4驱动550.90.07环境兼容性避坑指南 1. 镜像核心配置解析 PyTorch 2.8深度学习镜像是一个经过深度优化的通用计算环境,专为现代AI工作负载设计。这个镜像最显著的特点是完整适配NVIDIA最新计算架构,基于RTX…...

Unity资源提取实战指南:5步搞定游戏资源修改与处理

Unity资源提取实战指南:5步搞定游戏资源修改与处理 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 对于Unity游戏爱好者和开发者来说,资源提取和编辑一直是技术难题。当你想要修…...

关于初次学习的c语言心得

我是一名大一下的学生,双非二本,因为一些原因休学了两年,现在正在努力学习c语言目标成为公司里面所谓的精通编程,学习c语言的过程每天坚持三小时以上,希望能进入像京东,华为等公司,我也想挣钱买…...

5步打造清爽右键菜单:ContextMenuManager开源工具完全指南

5步打造清爽右键菜单:ContextMenuManager开源工具完全指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 当你在Windows系统中右键点击文件时&#…...

SEO 竞价推广的投放策略有哪些

SEO 竞价推广的投放策略有哪些 在当今竞争激烈的市场环境中,SEO(搜索引擎优化)竞价推广已经成为企业获取高质量流量的重要手段。在实施SEO竞价推广时,有哪些有效的投放策略可以帮助企业最大化其广告效果?本文将从问题…...

3个核心模块提升原神游戏体验的智能辅助工具

3个核心模块提升原神游戏体验的智能辅助工具 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 - UI Automation Testing…...

ACUITY IMAGING 070-200000控制器模块

ACUITY IMAGING 070-200000 控制 / 模拟模块ACUITY IMAGING 070-200000 是美国 ACUITY IMAGING 公司出品的工业级高精度信号处理与控制模块,主要用于机器视觉、自动化检测及精密成像系统,负责信号采集、逻辑控制与数据传输,是工业视觉系统的核…...

OpenClaw故障排查大全:千问3.5-27B接口调用常见错误解决

OpenClaw故障排查大全:千问3.5-27B接口调用常见错误解决 1. 开篇:当OpenClaw遇上千问3.5-27B 上周深夜,我的OpenClaw突然罢工了——一个原本运行良好的自动化脚本在调用千问3.5-27B模型时频繁报错。作为个人效率工具的重度用户,…...