SpringBoot——加载测试专用属性

2023-10-27

简单介绍

在之前的时候我们使用过配置文件添加配置,使用过IDEA添加属性配置,使用过命令行添加临时属性配置。在测试中,也可以设置专用于测试的临时配置属性。

使用方法

首先打开SpringBoot中默认创建好的测试类:

打开之后会在主类上看到一个注解叫做@SpringBootTest,这个注解就是测试类中专用的注解,如果我们之后要创建自己的测试类,也需要使用这个注解,这个在之前也稍微有介绍过。然后我们点进去这个注解:

注解中有一properties属性,这个属性就是用来添加测试属性用的,我们先在配置文件中配置一些属性:

这个属性值没有任何的引用,等下我们会在测试类中读取这个配置值:

在测试类中,我们首先读取配置文件中的属性值,然后复制给一个变量,在默认的测试方法中输入这个变量的值,如果对读取配置文件的方式这块不熟悉回去再多看一下:

最后就输出了在配置文件中写好的值,但是现在我们的目的是将属性值修改在测试类中进行暂时修改,就需要使用刚才我们在注解中看到的那个属性:

参数的书写方式和使用properties配置文件的书写方式是一样的,使用"."连接多级配置最后用等号赋值,并且properties属性的值是一个字符串数组,可以同时写多个配置属性。现在我们再次运行测试:

这次的属性值就变成我们在测试注解中配置的值,配置值的默认类型就是字符串,所以不需要加因号,这里要注意。

添加测试时的命令行参数

使用args属性可以测试命令行启动时添加的参数,首先看一下配置的基础环境:

 首先在配置文件中配置一个自定义配置项,这个配置项没有任何的意义,不会被任何的工件读取,我们待会自己写代码读取这个属性的值。

 然后来到测试代码这里,第一个红色框的部分是测试类的核心注解@SpringBootTest,里面已经写好了args属性,属性的值就是我们模拟的在命令行参数启动的时候传入的命令行参数,这里需要注意命令行参数的编写格式,是--xxx=xxx的格式。

第二个红色框的部分是读取配置文件刚才写好的自定义属性,然后测试类中的代码就是输出读取的值。

整个测试类的含义就是我们读取配置文件中的值,但是在测试注解里也配置一个一样的属性,看启动的时候他会读取哪一个配置的值,如果是读取我们在注解中配置的值,也就是args属性对应的值则表示我们刚才说的都是对的,如果他依然读取的是配置文件中的值,那就说明我们配置错了,启动程序看结果:

 

很好,他确实输出了我们在@SpringBootTest中配置的属性值,这就说明我们之前的配置都是正确的。 

这里我们主要介绍的还是参数的优先级,这里命令行参数的优先级比配置文件的优先级要高,所以这里的命令行参数的属性值可以覆盖配置文件中的属性值。

加载测试专用属性的意义在于我们可以单独对某一个测试类或测试用例做测试,而其他的测试类和测试用例不受影响,并且这种属性的添加是源码级别的,即使更换了开发工具,只要运行代码则属性配置依然会保留。

先来看一下@SpringBootTest这个注解中,包含有很多的属性值可以传递,先看一下这个注解包含的属性:

在SpringBoot的官方文档中,我们可以看到关于SpringBootTest注解的所有的可选参数,之前我们也介绍过一些了,剩下的这些我们可以翻译成人话再看一次,这样下次我们在查阅官方文档的时候再看到类似的字眼和奇怪的翻译不同的地方至少知道哪里可以猜一下他的大概意思。

  • value:属性properties的别名,也就是说他的作用和properties的作用是一样的,而SpringBoot的属性有一个特性,就是当属性仅有一个的时候默认是value属性的属性值,且value属性名可以不写,那么就表示当想要设置一些测试属性的参数的时候,可以直接写参数而不用写属性名
  • classes:用于指定SpringBoot启动类的所在路径,这些不用写是因为启动类和测试类在同一个包下,他自动会扫描同一个包下面有没有启动类,如果没有会报错,要求你指定启动类的时候就会用到这个属性,这个之前我们见到过。
  • args:用于指定测试的时候添加的命令行参数。我们的SpringBoot程序可以使用命令行启动,当使用命令行参数启动的时候就会涉及到一个命令行参数的问题,这个参数就是用来在测试的时候模拟命令行参数用的。

  • properties:这个的作用刚才已经说过了,用来在测试的时候输入测试参数使用的。

  • webEnvironment:这个是模拟Web环境的测试使用的。我们的Web环境测试并不只是在启动项目之后使用PostMan测试请求是否发送,我们在使用PostMan测试之前应该自己也测试一遍,这个参数就是用来模拟Web环境发送请求的,这个之后就会再次见到。

  • useMainMethod:创建待测 SpringApplication 时要使用的 main 方法使用类型。这个现在先了解一下就好,之后会详细的说明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot——加载测试专用属性 的相关文章

随机推荐

  • uniapp超实用页面三层架构(背景层+模糊层+内容层)

    更新 固定高度 滚动条 解决内容超出问题 内容不超出可以去掉
  • Python到底有多强?双十一的时候带你领略它的强大之处!

    双十一第一波付尾款已经开始啦 怎么样 不过很烦的事情就是 手速不够快 抢不过人家 总是错过优惠券 看到好东西 稍微犹豫了下 然后也没了 哭唧唧 成天忙得晕头转向 忘记付尾款 不仅东西没抢到 定金也没了 还有啊 双十一的优惠攻略真的是看得人头
  • 大文件切片上传、视频切片上传转m3u8播放

    一 故事 前不久干项目 涉及到在线学习 简单来说就是对文章 视频进行在线学习 这个时候问题出现了 就是在上传视频的时候 速度很是慢 除此之外 视频播放也是卡的鸭皮 然后就开始疯狂网上搜刮知识 最终解决方案如下 二 解决方案 1 视频采用切片
  • gtest各项参数

    1 测试部分 1 gtest list tests 列出所有测试的名字而不是运行它们 例如TEST fun add 输出就是fun add 2 gtest filter positive patterns 过滤作用 仅仅运行那些名字匹配po
  • docker安装RabbitMQ及安装延迟插件

    我这个安装攻略首先得保证服务器上安装过docker了 如果没安装docker请先去安装docker 1 首先说一下什么是MQ MQ message queue 字面意思上来说消息队列 FIFO先入先出 队列中存入的内容是message 是一
  • Docker 无法使用Vi/Vim/Gedit

    当在ubuntu下 使用docker container 时 想要编辑一些文件 但是docker登陆后 无法安装vim 无法使用apt get命令 所以可以考虑另一种方法 即在本地修改好文件 把文件拷贝覆盖到docker 使用以下命令 do
  • 记录第一篇被”华为开发者联盟鸿蒙专区 “收录的文章

    记录第一篇被 华为开发者联盟鸿蒙专区 社区收录的文章 坚持写作的动力是什么 是记录 分享 以及更好的思考
  • Qt自学笔记-自定义信号和槽(传智教育)

    一 新建项目 1 项目名称 02 SignalAndSlot 建立一个空窗口 基类 Qwidget 名称Widget 先运行一下第一个空窗口 检查一下代码 2 根据需求在项目上创建新文件 2 1 第一个文件 Teacher 不是一个控件 因
  • LeetCode(Python)——回文数(简单)

    回文数 概述 给你一个整数 x 如果 x 是一个回文整数 返回 true 否则 返回 false 回文数是指正序 从左向右 和倒序 从右向左 读都是一样的整数 输入 x 121 输出 true 输入 x 121 输出 false 输入 x
  • PAT 7 三羊献瑞(dfs)

    三羊献瑞 观察下面的加法算式 祥 瑞 生 辉 三 羊 献 瑞 三 羊 生 瑞 气 其中 相同的汉字代表相同的数字 不同的汉字代表不同的数字 请你填写 三羊献瑞 所代表的4位数字 答案唯一 不要填写任何多余内容 答案 9分 f1
  • SPSS实现Fleiss Kappa与分析(也可利用公式计算)

    1 简单介绍 机器学习中涉及新数据集发布的论文通常会描述数据集的构建过程 一份数据集往往由多位标注员共同完成 不同标注员对数据的理解很容易存在偏差 这极大程度上会影响数据集的一致性 从而限制算法的性能 因此在构建数据集的标注过程中 大多数构
  • 解决:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' execu

    在准备写个脚本去爬取网易云歌曲信息时 用selenium去戳 这里采用的是chrome浏览器 链接网页时报错 File C Python37 lib site packages selenium webdriver chrome webdr
  • python日志文件

    version 1 disable existing loggers False root level ERROR handlers console propagate False loggers infoFileLogger level
  • windows任务计划程序拒绝访问

    问题现象 在windows任务计划程序中添加脚本程序 执行相应脚本 报了拒绝访问和创建目录需要输入参数问题 问题分析 没有权限执行脚本 问题解决 除了填写相应位置的脚本之外 还需要填写起始于的脚本所在路径
  • Qt系列文章之 Qt Model Class

    Qt Model Class Qt提供了一些列相互继承的Model类体系 Qt的Model类是对用户数据进行体系化封装并提供统一操作接口的一大类模块 Qt提供的模型类十分多 大致可以分为三种 不可实例化的抽象基类 代理模型类和可实例化模型类
  • 【Python习题集5】函数的设计

    函数的设计 一 实验内容 二 实验总结 一 实验内容 1 编写两个函数分别按单利和复利计算利息 根据本金 年利率 存款年限得到本息和和利息 调用这两个函数计算1000元在银行存3年 在年利率是6 的情况下 单利和复利分别获得的本息和和利息
  • 首次使用阿里云云效拉取代码

    首先 需要公司给权限 把你加入公司项目团队 其次 使用公司给的阿里云账号 密码去登录 登录https codeup aliyun com 通过公司人员给开的权限点击加入团队 使用RAM用户登录 输入阿里云账号 点击下一步3 输入阿里云密码
  • Unity与VisualStudio关联配置

    默认已经正确安装UnityHub和VisualStudio 本文环境为Unity2020 3 4f1c1 和 VisualStudio2019 简略 VisualStudio安装VisualStudio Tools for Unity Un
  • jquery 页面刷新

    页面加载时绑定按钮点击事件 function 按钮id click function refresh 点击按钮调用的方法 function refresh window location reload 刷新当前页面 或者下方刷新方法 par
  • SpringBoot——加载测试专用属性

    简单介绍 在之前的时候我们使用过配置文件添加配置 使用过IDEA添加属性配置 使用过命令行添加临时属性配置 在测试中 也可以设置专用于测试的临时配置属性 使用方法 首先打开SpringBoot中默认创建好的测试类 打开之后会在主类上看到一个