Day31:单元测试、项目监控、项目部署、项目总结、常见面试题

单元测试

保证独立性。

image

Assert:断言,一般用来比较是否相等,比如

Assert.assertEquals

在JUnit测试框架中,@BeforeClass,@Before,@After和@AfterClass是四个常用的注解,它们的作用如下:

@BeforeClass:这个注解应用于静态方法,表示这个方法会在所有测试方法之前执行一次。通常用于进行一些耗时的初始化操作,例如连接数据库。

@Before:这个注解应用于方法,表示这个方法会在每个测试方法执行之前执行。通常用于进行一些初始化操作,例如重置某些变量。

@After:这个注解应用于方法,表示这个方法会在每个测试方法执行之后执行。通常用于进行一些清理操作,例如关闭数据库连接。

@AfterClass:这个注解应用于静态方法,表示这个方法会在所有测试方法之后执行一次。通常用于进行一些清理操作,例如释放资源。

这四个注解的执行顺序是:@BeforeClass -> @Before -> 测试方法 -> @After -> @AfterClass。

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class SpringBootTests {@Autowiredprivate DiscussPostService discussPostService;private DiscussPost data;@BeforeClasspublic static void beforeClass() {System.out.println("beforeClass");}@Beforepublic void before() {// 初始化测试数据System.out.println("before");this.data = new DiscussPost();data.setUserId(111);data.setTitle("test title");data.setContent("Test");data.setCreateTime(new Date());data.setScore(Math.random() * 2000);discussPostService.addDiscussPost(data);}@Afterpublic void after() {// 删除测试数据System.out.println("after");discussPostService.updateStatus(data.getId(), 2);}@AfterClasspublic static void afterClass() {System.out.println("afterClass");}@Testpublic void testFindById() {DiscussPost post = discussPostService.findDiscussPostById(data.getId());//判断data和post是否一致Assert.assertNotNull(post);Assert.assertEquals(data.getTitle(), post.getTitle());Assert.assertEquals(data.getContent(), post.getContent());}@Testpublic void testUpdateScore() {int rows = discussPostService.updateScore(data.getId(), 2000.00);Assert.assertEquals(1, rows);DiscussPost post = discussPostService.findDiscussPostById(data.getId());Assert.assertEquals(2000.00, post.getScore(), 2);}}

执行整个类:

image

项目监控

image

下面演示的使用HTTP进行监控。

导入依赖

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

导入后就默认启用,二十多个端点大多数都启用,只有一个关闭服务器的端点未启用)最好不要启用),但只暴露了两个端点(health和info)

image

配置暴露

除了info和caches端点其余全暴露:

# 暴露所有端点
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=info,caches
management.endpoint.health.show-details=always

image

beans:

image

loggers:

image

自定义端点

创建actuator/DatabaseEndPoint类:

@Component
//访问路径:/actuator/database
@Endpoint(id = "database")
public class DatabaseEndpoint {private static final Logger logger = LoggerFactory.getLogger(DatabaseEndpoint.class);//通过连接池获取连接,查询数据库@Autowiredprivate DataSource dataSource;//ReadOperation表示只能通过GET请求访问@ReadOperationpublic String checkConnection() {try (Connection conn = dataSource.getConnection();) {return CommunityUtil.getJsonString(0, "获取连接成功!");} catch (Exception e) {logger.error("获取连接失败!" +  e.getMessage());return CommunityUtil.getJsonString(1, "获取连接失败!");}}}

访问database:

image

添加权限管理

.requestMatchers("/discuss/delete","/data/**","/actuator/**").hasAnyAuthority(AUTHORITY_ADMIN)

项目部署(Deprecated)

本地代码传到云服务器→ 云服务器打包→ 云服务器部署

云服务器内存暂时不够,先跳过。

image

image

项目总结

image

常见面试题(Deprecated)

等到面试在看。

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

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

相关文章

Vue--》从零开始打造交互体验一流的电商平台(一)

今天开始使用 vue3 ts 搭建一个电商项目平台&#xff0c;因为文章会将项目的每处代码的书写都会讲解到&#xff0c;所以本项目会分成好几篇文章进行讲解&#xff0c;我会在最后一篇文章中会将项目代码开源到我的github上&#xff0c;大家可以自行去进行下载运行&#xff0c;希…

LeetCode刷题笔记第190题:颠倒二进制位

LeetCode刷题笔记第190题&#xff1a;颠倒二进制位 题目: 颠倒输入的二进制数 想法&#xff1a; 通过位运算来实现&#xff0c;以下通过代码逐步说明 class Solution:def reverseBits(self, n: int) -> int:result 0for i in range(32):result (result << 1) |…

Pyserini

文章目录 关于 Pyserini安装&#x1f3ac;如何搜索&#xff1f;&#x1f64b;如何给我的语料集建立索引 关于 Pyserini github : https://github.com/castorini/pyseriniPyserini: An Easy-to-Use Python Toolkit to Support Replicable IR Research with Sparse and Dense Re…

第09章 局域网技术(拓扑结构设计+FDDI工作机制)

9.1 本章目标 了解IEEE 802局域网标准掌握局域网拓扑结构了解10Base以太网了解快速以太网熟悉交换式以太网了解千兆位以太网了解其它种类的局域网局域网中的常用技术 9.2 局域网概述 罗伯特梅特卡夫个人简介 罗伯特梅特卡夫&#xff08;Robert Metcalfe&#xff0c;1…

Dijkstra算法(C/C++简明注释详解版: 代码实现 测试数据)

算法思想简述&#xff08;From C知道&#xff09;&#xff1a; Dijkstra算法是一种求解最短路径的贪心算法&#xff0c;它能够找到两点之间的最短路径。C语言实现Dijkstra算法需要以下步骤&#xff1a; 1. 创建一个数组用于记录起始点到其他节点的距离&#xff0c;初始化为无…

【镜像仿真篇】磁盘镜像仿真常见错误

【镜像仿真篇】磁盘镜像仿真常见错误 记系统镜像仿真常见错误集—【蘇小沐】 1、实验环境 2023AFS39.E01&#xff08;Windows11系统镜像&#xff09;Arsenal Image Mounter&#xff0c;[v3.10.262]‍Vmware Workstation 17 Pro&#xff0c;[v17.5.1]Windows 11 专业工作站版…

Android ViewFlipper

Android ViewFlipper 在很多APP都有如下的头条/热榜效果&#xff08;上下自动翻滚&#xff09; 这种效果可以使用很多方式实现&#xff0c;有一个简便的方式可以使用ViewFlipper控件实现&#xff0c;ViewFlipper控件继承结果如下&#xff1a; 可以看出ViewFlipper 继承自ViewA…

在VMware上利用Samba实现资源共享

一、背景 FTP协议能让主机之间的文件传输变得简单方便&#xff0c;但是FTP协议的本质是传输文件。 举个栗子&#xff1a;当客户端想修改服务器上的test.txt&#xff0c;需要先get test.txt将文件下载下来&#xff0c;修改后再put test.txt 有没有一种方式能使客户端直接修改…

关于支付接口测试点的思考

支付接口测试是一项非常重要的测试工作&#xff0c;以下是一些测试支付接口的建议&#xff1a; 测试支付流程&#xff1a; 测试支付流程的正确性&#xff0c;包括支付前、支付中和支付后的各个环节&#xff0c;确保支付流程的顺畅和正确。 测试支付金额&#xff1a; 测试支…

Python 中的 Unit testing 文件写入

在 Python 中进行单元测试时&#xff0c;有时候需要测试文件写入操作。为了模拟文件写入并进行单元测试&#xff0c;你可以使用 Python 的 unittest 模块&#xff0c;并结合 io.StringIO 或 tempfile 模块来模拟文件操作。 1、问题背景 在 Python 中&#xff0c;为 ConfigPars…

Docker下Open WebUI,Ollama的安装实践

提示一下Open WebUI与ollama的关系。后端的同学可以理解为Open WebUI等于是个Navicat&#xff0c;Ollama就是具体的数据库实例。 官方安装文档&#xff1a; &#x1f3e1; Home | Open WebUI Open WebUI官网文档翻译&#xff1a; 注意&#xff1a; 使用Docker安装Open WebU…

58. 【Android教程】音频录制:MediaRecord

在第 57 节我们使用 MediaPlayer 实现了一个 mp3 播放器&#xff0c;除了播放 Android 还提供了 MediaRecorder 用于录音。Android 设备基本都会有一个麦克风&#xff0c;通过 MediaRecorder 可以打开麦克风进行语音采集&#xff0c;这一节我们就来学习如何在 Android 系统上实…

深入解析C++的auto自动类型推导(二)

目录 使用auto的好处 新标准新增功能 使用auto的限制 上一篇详细讲解了使用auto关键字进行自动类型推导时的推导规则&#xff0c;这一篇重点讲解auto的使用以及C14、C17、C20等新标准对auto的功能完善&#xff0c;最后再介绍auto的使用限制。上一篇请从这里阅读&#xff1a;…

线程池核心原理浅析

前言 由于系统资源是有限的&#xff0c;为了降低资源消耗&#xff0c;提高系统的性能和稳定性&#xff0c;引入了线程池对线程进行统一的管理和监控&#xff0c;本文将详细讲解线程池的使用、原理。 为什么使用线程池 池化思想 线程池主要用到了池化思想&#xff0c;池化思想…

【计算机科学速成课】笔记一

文章目录 写在前面1.计算机的早期历史2.电子计算机3.布尔运算和逻辑门4.二进制5.算术逻辑单元-ALU6.寄存器和内存 写在前面 所有的一切源于这样一个网站——CS自学指南。 这是新手小白入门计算机科学必要了解的知识——【计算机科学速成课】[40集全/精校] - Crash Course Comp…

Dragonfly 拓扑的路由算法

Dragonfly 拓扑的路由算法 1. Dragonfly 上的路由 (1)最小路由(2)非最小路由 2. 评估3. 存在问题 (1)吞吐量限制(2)较高的中间延迟 references Dragonfly 拓扑的路由算法 John Kim, William J. Dally 等人在 2008 年的 ISCA 中提出技术驱动、高度可扩展的 Dragonfly 拓扑。而…

在做题中学习(53): 寻找旋转数组中的最小值

153. 寻找旋转排序数组中的最小值 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a;O(logn)->很可能就是二分查找 思路&#xff1a;再看看题目要求&#xff0c;可以画出旋转之后数组中元素的大小关系&#xff1a; 首先&#xff0c;数组是具有二段性的(适配二分查…

数据库(MySQL)—— 索引

数据库&#xff08;MySQL&#xff09;—— 索引 什么是索引创建索引使用 CREATE INDEX 语句使用 ALTER TABLE 语句在创建表时定义索引特殊类型索引注意事项 举个例子无索引的情况有索引的情况为什么索引快索引的结构 今天我们来看看MySQL中的索引&#xff1a; 什么是索引 MyS…

财政部、交通运输部:推动北斗导航等新技术与交通基础设施融合

财政部、交通运输部&#xff1a;推动北斗导航等新技术与交通基础设施深度融合 近日&#xff0c;为深入贯彻落实中共中央、国务院关于加快建设交通强国、数字中国等决策部署&#xff0c;推进公路水路交通基础设施数字转型、智能升级、融合创新&#xff0c;加快发展新质生产力&a…

智能BI(后端) -- 智能分析业务

文章目录 业务流程开发接口easyExcel从excel读取数据&#xff0c;数据过滤并进行数据压缩分析接口利用AI生成结论和图表AI提问技巧调用AI直接调用AI大模型官网的接口使用云服务商提供的&#xff0c;封装后的AI接口利用鱼聪明AI提供的开放SDK 智能接口实现 业务流程 用户输入 …