SpringBoot——在开发阶段对表现层进行测试

news2024/10/6 10:36:03

在开发阶段对表现层进行测试

之前在做测试的时候,我们对Dao层做了测试,对Service层做了测试,但是在测试表现层的时候,我们并不是在测试类中启动的Web端口,还是直接启动了引导类,并在浏览器中打开本地网址或者用PostMan进行的测试,但是我们现在想在启动测试类的时候就启动Web环境,这个需求要如何解决呢?

在启动测试类的时候启动Web环境

之前我们在介绍@SpringBootTest注解的时候提到过一个属性,属性名叫做WebEnvironment,这个属性就是控制启动测试类的时候是否启动Web环境,这个属性的属性值有四个:
在这里插入图片描述
NONE:表示不启动
MOCK:默认值,也是不启动
DEFINED_PORT:在默认的端口启动Web环境
RANDOM_PORT:在随机的端口启动Web环境
我们先看一下正常启动测试类的情况:
在这里插入图片描述
我们准备一个测试类,然后启动测试类,主要观察在控制台输出的内容:
在这里插入图片描述
控制台上的输出内容很少,并且很明显没有任何的和Web环境有关的内容,很明显我们的Web环境并没有启动,现在我们设置在默认端口上启动测试用例:
在这里插入图片描述
这次我们依然注意观察控制台上的输出内容,看和上次有什么不同
在这里插入图片描述
可以看到这输在这里插入图片描述
可以看到这次输出的日志内容多了很多,并且也带有端口号,说明我们的测试用例已经在Web端启动了。

模拟发送请求

在之前的操作中,我们已经开启了Web环境,现在要做的就是在测试类中的Web环境下发送请求,这里引入一个概念叫做虚拟请求,大概意思就是说我的这次请求并不是真实发生在浏览器中的,而是我为了测试而做的模拟请求,要发送虚拟请求,首先要做以下这几件事:
首先是准备一个发送请求的Controller:
在这里插入图片描述
然后开启发送虚拟请求的注解:
在这里插入图片描述
这个注解添加在测试注解下面,是一个类注解,表示在测试类中自动配置一个可以发送虚拟请求的对象
那么接下来,就是拿到这个发送虚拟请求的对象:
在这里插入图片描述
这个MockMvc对象不是我们自己配置的,是当我们在写完@AutoConfigureMockMvc注解之后,他自己帮我们配置好并放在Spring容器中的,我们可以通过自动装配的方式获取这个对象,还有一种方式,我们之前在学习Spring的时候介绍过,可以在处理器的形参上引入仅在此方法中可以使用的对象:
在这里插入图片描述
这两种方法使用哪一种都可以,只要能引入发送虚拟请求的对象即可,然后就是对象调用方法发送虚拟请求:
在这里插入图片描述
首先确定perfrom()方法是用来执行发送请求的,然后这个方法里面要一个参数,快速创建未知方法参数对象的方法就是先在方法参数的位置输入一个变量名,然后会报出异常,鼠标悬浮在异常的位置自动修复一场即可快速创建方法参数对象:
在这里插入图片描述
可以看到方法的参数最终创建出了一个RequestBuilder类型的对象,我们点进去这个对象看一下里面是什么:
在这里插入图片描述
可以看到这是一个接口,并且这个接口有五个实现类,我们最终使用的是他的实现类,也就是MockMvcRequestBuilder这个类:
在这里插入图片描述
这个类并不是new出来的,而是使用builder构造出来的,传入的参数就是你要发送请求的地址
这个地址,完整的地址是这样的

http://localhost:8080/text

但是我们在测试类中的测试环境已经帮我们自动填充上了前面的前缀,我们只需要填写处理器的地址就可以了。
最终我们启动这个测试类,看一下最终的输出结果;按照我们的预想,首先这个测试会启动Web环境,并且会发送请求到处理器,处理器方法会执行。现在我们直接启动看结果:
在这里插入图片描述
很好,很顺利地输出了我们再Controller中添加的内容和语句,这里要注意的是,他并不是会一直保留这个Web环境,而是发送一次请求,或者将测试类中的请求代码都执行完毕之后,这个临时的Web环境就会关闭,并不会一直保持端口的开启。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优思学院|带你轻松驾驭六西格玛:解答大家的五大疑问

在业务改进和质量管理领域,六西格玛被公认为一种卓越的方法和工具,可以帮助企业实现接近完美的质量水平。无论是制造业、医疗保健、金融还是服务行业,六西格玛都被广泛采用,并取得了令人瞩目的成果。它不仅可以降低缺陷和错误&…

【IoT物联网】IoT小程序在展示中央空调采集数据和实时运行状态上的应用

利用前端语言实现跨平台应用开发似乎是大势所趋,跨平台并不是一个新的概念,“一次编译、到处运行”是老牌服务端跨平台语言Java的一个基本特性。随着时代的发展,无论是后端开发语言还是前端开发语言,一切都在朝着减少工作量&#…

基于知识图谱的《红楼梦》人物关系可视化及问答系统(含码源):命名实体识别、关系识别、LTP简单教学

基于知识图谱的《红楼梦》人物关系可视化及问答系统(含码源):命名实体识别、关系识别、LTP简单教学 文件树: app.py是整个系统的主入口templates文件夹是HTML的页面 |-index.html 欢迎界面 |-search.html 搜索人物关系页面 |-all_relation.…

JMeter参数化(6)

JMeter参数化 一、JMeter用户参数1、作用2、案例1:百度搜索接口:使用用户参数模拟不同线程操作时,搜索不同的数据 二、用户自定义变量案例1:演示用户定义的变量具有全局性案例2:使用用户定义的变量,分组管理…

基于Java的电影购票系统的设计与实现(源码+文档+数据库)

本系统是一个网上电影售票系统,可以为用户提供方便的在线订票环境。主要实现了用户注册、登录、查询、订购电影票、管理已订购电影票等功能。通过后台管理模块可以实现对用户、播放厅、电影、影片安排、电影票等的管理等功能。本系统以IntelliJ IDEA 作为开发环境&a…

2.3 Web应用 -- 2. HTTP 连接

2.3 Web应用 -- 2. HTTP 连接 HTTP连接的两种类型非持久性连接响应时间分析与建模持久性HTTP HTTP连接的两种类型 非持久性连接(Nonpersistent HTTP) 每个TCP连接最多允许传输一个对象HTTP 1.0版本使用非持久性连接 持久性连接(Persistent HTTP) 每个TCP连接允许传输多个对象H…

vue3项目创建部署

别名联想路径提示: Element-plus默认的颜色是蓝色,以下修改成我们自己的主题色: css预处理语言 “scss是一种css预处理语言,是一个css的扩展,它在css语法的基础上,允许您使用变量,嵌套规则,混合,导入,继承等功能,使得css更加强大和优雅,而…

Jetson Orin Nano Developer Kit

Jetson Orin Nano Developer Kit包括Jetson Orin Nano 8GB模块,该模块具有NVIDIA安培GPU(具有1024个CUDA内核和32个第三代张量内核)和6核ARM CPU,能够运行多个并发AI应用程序管道并提供高推断性能。 开发套件载体板支持所有Jetson Orin Nano和Orin NX模块…

2023年如何通过8个步骤创建社交媒体内容策略

在创建成功的社交媒体内容策略时,感觉有无穷无尽的选项和平台可供选择。但不要因此而不知所措,因为只要稍作规划并发挥大量创造力,您就可以制定有助于提升品牌知名度、提高客户参与度和推动销售的战略。 目录 定义社交媒体内容配方的八个…

基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)

feishu-doc-export 一个支持Windows、Mac、Linux系统的飞书文档一键导出服务,仅需一行命令即可将飞书知识库的全部文档同步到本地电脑。导出速度嘎嘎快,实测700多个文档导出只需25分钟,且程序是后台挂机运行,不影响正常工作。 动…

python爬虫爬取top250中排名、评分、导演等展示可视化界面

源代码4千字报告 需要源代码数据库可视化数据4千字报告加我qq

基于matlab评估单相机校准的准确性(附源码)

一、前言 相机校准是使用特殊校准模式的图像估计相机参数的过程。参数包括相机内在系数、失真系数和相机外在系数。校准相机后,有几种方法可以评估估计参数的准确性: 绘制相机的相对位置和校准模式 计算重投影误差 计算参数估计误差 二、校准相机 …

Spring Boot 数据访问框架介绍及使用

Spring Boot 数据访问框架介绍及使用 Spring Boot 是一个流行的 Java 应用程序框架,它提供了许多工具和库,帮助开发人员快速构建高效的应用程序。其中,Spring Boot 数据访问框架是其中一个重要的组件,它提供了许多不同的选项&…

短视频抖音多账号管理系统源码搭建开发(路径一)

一、开发环境 目录 一、开发环境 二、短视频账号矩阵系统源码功能构建模型 短视频抖音多账号管理系统源码搭建开发,视频抖音多账号管理系统源码的开发环境配置非常重要。 1、首先,确保您的计算机已经安装了适当的开发工具,如Java SDK、An…

(css)文字与底部对齐

(css)文字与底部对齐 修改前: 修改后: 代码: .AITip {height: 11%;color: #01ffff;font-size: 24px;//主要属性display: flex;justify-content: center;align-items: flex-end;line-height: 1; }解决参考:https://blog.csdn.n…

多家快递如何跟踪物流信息,并快速掌握了每条物流信息时间差呢

对于很电商商家朋友们他平时一般都是发多家快递,多家快递公司的物流信息处理和管理是一个挑战。很多公司在处理这些信息时需要耗费大量人力和时间,为了提高工作效率和降低成本,需要采用一些高效的管理和利用方法。例如使用第三方的工具来&…

路由的介绍

目录 路由器的转发原理:路由表 路由——指示路由器去往未知网段的方法 路由器的转发原理:路由表 当一个数据包来到路由器,路由器将基于数据包中的目标IP地址查询自身的路由表,如果路由表中有相应的记录,则无条件根据…

Windows系统显示语言的修改及“我们无法获取此Windows显示语言”报错的处理

本文介绍在Windows 10操作系统中,修改系统的显示语言的方法;并解决在这一过程中,出现的“很抱歉,我们无法获取此Windows显示语言”报错问题。 本文就以将原本系统语言的中文修改为英文为例,介绍具体的方法。首先&#…

java 8 stream流之大数据篇

如果你会任意一门语言的stream流,没道理不会大数据开发。 俗话说男追女隔座山,女追男隔层纱。 如果说零基础学大数据,感觉前面是一座山,那么只要你会java或者任意一门语言的stream流,那大数据就只隔了一层纱。 本文以…

gazebo软件创造.world文件。

Gazebo可以创造数据。在Gazebo中创建一个机器人世界,不仅可以仿真机器人的运动功能,还可以仿真机器人的传感器数据。 背景:我是个新接触ros2的小白,变学习试用成功后分享狭窄的片面知识,必然不全,请多包含。…