企业级信息系统开发讲课笔记4.2 Spring Boot项目单元测试、热部署与原理分析

news2024/10/7 16:19:56

文章目录

  • 零、学习目标
  • 一、Spring Boot单元测试
    • (一)Spring Boot单元测试概述
    • (二)对项目HelloWorld01进行单元测试
      • 1、修改pom.xml文件,添加测试依赖启动器和单元测试
      • 2、创建测试类与测试方法
    • (三)对项目HelloWorld02进行单元测试
  • 二、Spring Boot热部署
    • (一)Spring Boot热部署概述
    • (二)对项目HelloWorld01进行热部署
      • 1、在pom.xml文件里添加开发工具依赖
      • 2、热部署配置
      • 3、热部署测试
  • 三、Spring Boot原理分析
    • (一)Spring Boot依赖管理
      • 1、spring-boot-starter-parent依赖
      • 2、spring-boot-starter-web依赖
    • (二)Spring Boot 自动配置
      • 1、Spring Boot自动配置的实现
      • 2、@SpringBootApplication注解
    • (三)Spring Boot 执行流程
      • 1、Spring Boot执行流程的两个步骤
      • 2、Spring Boot执行流程的示意图
  • 四、课后作业
    • 任务1、对上一讲的课后作业StudentInfo项目进行单元测试
    • 任务2、按照讲稿实现热部署,并针对项目StudentInfo进行热部署测试

零、学习目标

  1. 掌握Spring Boot单元测试实现
  2. 掌握Spring Boot热部署实现
  3. 熟悉Spring Boot基本原理

一、Spring Boot单元测试

(一)Spring Boot单元测试概述

  • 在实际开发中,每当完成一个功能接口或业务方法的编写后,通常都会借助单元测试验证该功能是否正确。Spring Boot对项目的单元测试提供了很好的支持,在使用时,需要提前在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器,可以通过相关注解实现单元测试。

(二)对项目HelloWorld01进行单元测试

在这里插入图片描述

1、修改pom.xml文件,添加测试依赖启动器和单元测试

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
 <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <scope>test</scope>
</dependency>

在这里插入图片描述

  • 如果使用Spring Initializr方式构建Spring Boot项目,则会自动加入测试依赖启动器。大家可以查看上一讲我们创建的HelloWorld02项目。

2、创建测试类与测试方法

  • 在src/test/java里创建net.hw.lesson01包
    在这里插入图片描述

  • 在net.hw.lesson01包里创建测试类TestHelloWorld01
    在这里插入图片描述

  • 给测试类添加测试启动器注解与Spring Boot单元测试注解

@RunWith(SpringRunner.class) //测试启动器,并加载Spring Boot测试注解
@SpringBootTest //标记Spring Boot单元测试,并加载applicationContext上下文环境

在这里插入图片描述

  • 注入待测试类HelloWorld01Controller
    在这里插入图片描述

  • 创建测试方法testHello(),测试待测试类实例的hello()方法

@Test
public void testHello(){
    // 获取控制器hello()方法的返回值                            
    String hello = controller.hello();
    // 在控制台输出hello()方法的返回值                           
    System.out.println("hello()方法的返回值:" + hello);
}                                      

在这里插入图片描述

  • 运行测试方法testHello()
    在这里插入图片描述
    在这里插入图片描述

  • 如果相判断待测试类的方法的返回值是不是指定的某个数据,那么我们可以利用Assert类的assertSame()方法来进行测试

  • 修改测试方法testHello()
    在这里插入图片描述

  • 运行测试方法,查看结果
    在这里插入图片描述

  • 测试失败。抛出AssertionError(断言错误)。

  • 期望值:Hello Spring Boot World!

  • 实际值:<h3>Hello Spring Boot World!</h3>

  • 再修改测试方法testHello(),修改期望值
    在这里插入图片描述

  • 运行测试方法,查看结果
    在这里插入图片描述

(三)对项目HelloWorld02进行单元测试

在这里插入图片描述

  • 添加注解,注入待测试类,编写测试方法contextLoads()的测试代码
    在这里插入图片描述
  • 运行测试方法,查看结果
    在这里插入图片描述
  • 看到绿色勾勾,表明单元测试成功

二、Spring Boot热部署

(一)Spring Boot热部署概述

  • 在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大地降低了程序开发效率。为此,Spring Boot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,而无需手动重启项目。

(二)对项目HelloWorld01进行热部署

在这里插入图片描述

1、在pom.xml文件里添加开发工具依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

在这里插入图片描述

2、热部署配置

  • 单击[file]->[settings]菜单项,打开设置对话框,找到complier,勾选择build project automatically (自动构建项目)
    在这里插入图片描述
  • 按组合键Ctrl + Shift + Alt + /打开Maintenance对话框
    在这里插入图片描述
  • 单击Registry选项,在Registry对话框里,勾选compiler.automake.allow.when.app.running,让程序在运行过程中也能自动编译
    在这里插入图片描述

3、热部署测试

  • 运行启动类HelloWorld01Application
    在这里插入图片描述
  • 在浏览器里访问http://localhost:8080/hw01/hello
    在这里插入图片描述
  • 修改控制器HelloWorld01Controller代码
    在这里插入图片描述
  • 不用重新运行启动类HelloWorld01Application,刷新浏览器,查看结果
    在这里插入图片描述
  • 由此可见,采用了热部署,修改了程序,不用重启项目,系统会在程序运行过程中自动编译,于是可以看到修改后程序的运行结果。

三、Spring Boot原理分析

(一)Spring Boot依赖管理

1、spring-boot-starter-parent依赖

在这里插入图片描述
spring-boot-starter-parent是通过<properties>标签对一些常用技术框架的依赖文件进行了统一版本号管理

2、spring-boot-starter-web依赖

在这里插入图片描述
spring-boot-starter-web依赖启动器的主要作用是提供Web开发场景所需的底层所有依赖文件,它对Web开发场景所需的依赖文件进行了统一管理

(二)Spring Boot 自动配置

1、Spring Boot自动配置的实现

  • Spring Boot应用的启动入口是@SpringBootApplication注解标注类中的main()方法
  • @SpringBootApplication能够扫描Spring组件并自动配置Spring Boot
  • @SpringBootApplication注解是一个组合注解,包含@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个核心注解

2、@SpringBootApplication注解

在这里插入图片描述

(三)Spring Boot 执行流程

1、Spring Boot执行流程的两个步骤

  • 初始化Spring Application实例
    在这里插入图片描述
  • 初始化Spring Boot 项目启动
    在这里插入图片描述

2、Spring Boot执行流程的示意图

在这里插入图片描述

四、课后作业

任务1、对上一讲的课后作业StudentInfo项目进行单元测试

任务2、按照讲稿实现热部署,并针对项目StudentInfo进行热部署测试

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

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

相关文章

CMAKE介绍和使用(Windows平台)

CMake是一个跨平台的安装&#xff08;编译&#xff09;工具&#xff0c;可以用简单的语句来描述所有平台的安装(编译过程)。 Windows平台 cmake工具的下载 cmake工具下载官网&#xff1a; Download | CMake 下载压缩包后解压&#xff0c;解压后的bin文件路径加到电脑系统环境…

ANR基础篇 - 相关系统知识简介

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、CPU相关知识1.CPU核心架构大小核架构 2.绑核3.锁频4.CPU状态 二、线程状态1.R…

自学黑客(网络安全)如何入门?收藏这篇就够了

前言&#xff1a; 趁着今天下班&#xff0c;我花了几个小时整理了下&#xff0c;非常不易&#xff0c;希望大家可以点赞收藏支持一波&#xff0c;谢谢。 我的经历&#xff1a; 我19年毕业&#xff0c;大学专业是物联网工程&#xff0c;我相信很多人在象牙塔里都很迷茫&#x…

阿里18k的外包能去吗?

有挺多测试员曾在BAT、网易这些大厂做过外包&#xff0c;想必大家也是非常关心此类问题&#xff0c;我就想介绍下“什么是外包&#xff1f;”&#xff0c;“外包公司的现状”&#xff0c;就“为什么这么多人鄙视外包测试岗&#xff1f;”、”阿里18K的外包测试岗能去吗&#xf…

适配器模式知多少

目录 目标 概述 实战 目标 熟悉适配器设计模式&#xff0c;了解适配器设计模式的使用场景、具体实现。 概述 一、结构型设计模式 结构型设计模式是设计模式的一种类型。它的关注点在于如何将对象和类组合成更大的结构。较为常见的结构型设计模式如&#xff1a;装饰者设计…

开源物联网平台和智能家居平台

开源物联网平台和智能家居平台 目 录 1、开源智能家居平台&#xff08;家庭自动化工具&#xff09; 1. Home Assistant2. openHAB3. Domoticz4. Calaos2、开源物联网平台 1. Thingsboard2. Kaa IoT Platform3. SiteWhere4. JetLinks5. Thinger.io 做者&#xff1a;晨星1032 1…

把握数据核心,A/B测试成就高效邮件营销新纪元

电子邮件营销是现代营销战略中的重要组成部分。但是收件人每天要收到大量的邮件&#xff0c;而确保你的电子邮件有效和吸引人是一件具有挑战性的事情。想要克服这个问题&#xff0c;提高电子邮件营销活动有效性是一个不错的方法。具体措施就是进行A/B测试&#xff01;在本文中&…

啥是CTF?新手如何入门CTF?

CTF是啥 CTF 是 Capture The Flag 的简称&#xff0c;中文咱们叫夺旗赛&#xff0c;其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜&#xff0c;当有一方的旗帜已被敌军夺取&#xff0c;就代表了那一方的战败。在信息安全领域的 CTF 是说&#xff0c;通过各种攻击手…

NIO简单入门笔记【一】 三大组件

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏 JAVA专栏 &#x1f4e7;如果文章知识点有错误的地方&#xff0c;请指正&…

Python 基础(十三):函数

❤️ 博客主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;Python 入门核心技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; 文章目录 一、创建函数二、调用函数三、向函数传递参数3.1、形参和实参3.2、多参函数3.3、参数的…

【C生万物】 指针和数组笔试题汇总 (上)

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《C生万物 | 先来学C》&#x1f448; 前言&#xff1a; 在学习完初级和进级的指针之后&#xff0c;为了检验掌握程度&#xff0c;这里出一期指…

MYSQL 之 Redis配置与优化

&#xff08;一&#xff09;关系数据库和非关系数据库 关系库数据库Oracle &#xff0c;mysql &#xff0c;sql&#xff0c;server&#xff0c;microsoft Access &#xff0c;postgresql 以上数据库必须先建表在设计表的结构&#xff0c;然后存储的时侯按表的结构去存&#x…

微信小程序入门01-工具的下载安装及模板的安装

小程序开发现在已经有多种模式了&#xff0c;有使用uniapp开发的&#xff0c;使用微信开发者工具开发的&#xff0c;还有低代码工具也支持开发小程序的。 在众多开发模式中&#xff0c;使用官方开发者工具开发也是一种形式。本篇我们就介绍一下如何用微信开发者工具搭建小程序…

【MATLAB第32期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现(持续更新)

【MATLAB第32期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理分类问题MATLAB代码实现(持续更新) 本文敏感性分析主要分析分类问题&#xff08;fisher、rf、arf、nca等&#xff09;。 一、降维方法&#xff08;分类&#xff09; 常见的降维方法&#xff1a; 常见的敏…

2023,8种必备Selenium编写自动化用例的技巧(建议收藏)

在开始自动化时&#xff0c;您可能会遇到各种可能包含在自动化代码中的方法&#xff0c;技术&#xff0c;框架和工具。有时&#xff0c;与提供更好的灵活性或解决问题的更好方法相比&#xff0c;这种多功能性导致代码更加复杂。在编写自动化代码时&#xff0c;重要的是我们能够…

Jangow

Jangow 1.环境准备 靶场地址&#xff1a;https://www.vulnhub.com/entry/jangow-101,754/下载好靶机之后直接使用VMware Workstation Pro虚拟机导入环境&#xff0c;启动即可&#xff0c;将网段设置为NAT模式攻击机&#xff1a;kali&#xff08;192.168.80.180&#xff09;靶…

【电厂用 多功能数码显示 HJY-F931B/D交流三相电压继电器JOSEF约瑟】

用途 HJY系列数字式交流电压继电器为瞬时动作特性&#xff0c;用于发电机&#xff0c;变压器&#xff0c;输电线路的继电保护装 置中作为过压或欠压的闭锁启动元件。 安装结构 导轨安装9&#xff0c;导轨安装E两种结构方式&#xff0c;具体尺寸请参考外型尺寸图。特点 (1). 采…

局域网内使用的多人协同编辑文档的软件哪个好?对比5款主流平台

支持局域网内多人协同编辑文档的软件或平台哪个好&#xff1f;PingCode 、Confluence 等知识库工具和腾讯文档、飞书文档等都支持多人协作编辑&#xff0c;怎么选&#xff1f;这是企业团队在找文档管理工具最常见的问题。 支持局域网内协同编辑的软件可以分为两个大类&#xf…

azkaban介绍

目录 为什么需要工作流调度系统 什么是azkaban azkaban适用场景 azkaban特点 常见的工作流调度系统 azkaban和Ooize特性对比 azkaban的架构 azkaban调度的任务有可能有那些类型 总结 为什么需要工作流调度系统 一个完整的大数据分析系统&#xff0c;必然由很多任务单…

基于显扬科技3D视觉相机的医疗试管分拣系统

行业现状&#xff1a; 医疗试管分拣是医疗行业中的一个重要环节&#xff0c;指将医疗实验室或生物技术研究中的试管按照一定的规则进行分拣&#xff0c;并对试管的类型、位置、数量等信息进行识别和管理。 随着医疗技术的不断发展和诊断治疗的精细化&#xff0c;医疗试管分拣…