【SpringBoot 2】(十一)单元测试JUnit 5 指标监控

写在前面在这里插入图片描述🛫更多知识总结见SpringBoot 2专栏
🚕本篇知识点总结自尚硅谷雷神的视频
🚒博主对于该知识尚在学习阶段
🚄如果发现存在问题请毫不吝啬的指出
🚀🚀扎哇太枣糕的博客首页🚀🚀

文章目录

  • 1 单元测试JUnit 5
    • 1.1JUnit 5简介以及使用
    • 1.2 常用的测试注解
    • 1.3 断言(assertions)
    • 1.4 前置条件(assumptions)
    • 1.5 嵌套测试
    • 1.6 参数化测试
  • 2 指标监控
    • 2.1 使用url实现监控
    • 2.2 可视化的监控平台

1 单元测试JUnit 5

1.1JUnit 5简介以及使用

  JUnit5作为最新版本的JUnit框架与之前版本的Junit框架有很大的不同。JUnit5主要由三个不同子项目的几个不同模块组成:JUnit Platform、JUnit Jupiter、JUnit Vintage。

  • JUnit Platform: 它是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。
  • JUnit Jupiter: 提供了JUnit5的新的编程模型,是JUnit5新特性的核心。内部 包含了一个测试引擎,用于在Junit Platform上运行。
  • JUnit Vintage: 由于JUint已经发展多年,为了照顾老的项目,JUnit Vintage提供了兼容JUnit4.x,Junit3.x的测试引擎。

  在这里我们需要了解的是:SpringBoot 2.4 以上版本移除了默认对JUnit Vintage的依赖。如果需要兼容junit4需要自行引入,不引入的话就不能使用junit4的功能@Test,但是JUnit5也有一个@Test注解能够完成同样的功能

使用:
  由上面的JUnit5分析可知:要想使用JUnit5并兼容JUnit以前的版本的话,必须引用以下两个依赖

<!--测试的启动器依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
<!--兼容JUnit4版本的单元测试-->
<dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId></exclusion></exclusions>
</dependency>

然后使用@SpringBootTest注解标注测试类,使用@Test标注测试方法

1.2 常用的测试注解

  官方文档中已经定义并解释了所有的注解,可以通过这个链接进行查看官方文档的链接地址接下来会选取常用的几个注解进行讲解学习

  • @SpringBootTest@Test不再赘述
  • @DisplayName注解:控制台砖展示名在这里插入图片描述
  • @BeforeEach注解:每个方法执行之前执行@AfterEach注解:每个方法执行之后执行在这里插入图片描述
  • @BeforeAll注解:所有方法执行之前执行@AfterAll注解:所有方法执行之后执行
    值得注意的是,这两个注解的修饰的方法都必须使用static修饰在这里插入图片描述
  • @Disable注解:在运行测试类的时候禁用这个方法,可以单独执行
  • @Timeout注解:设置测试方法的执行时间,超过这个时间则抛异常在这里插入图片描述
  • @ExtendWith注解:设置测试类的测试驱动,@SpringBootTest注解是个复合注解,其中底层就有@ExtendWith注解指定了测试类使用的是SpringBoot的测试驱动
  • @RepeatedTest注解:指定方法重复次数在这里插入图片描述

1.3 断言(assertions)

  断言是测试方法中的核心部分,用来对测试需要满足的条件进行验证。所谓断言就是检查业务逻辑返回的数据是否合理,在所有的测试运行结束以后,会产生一个详细的测试报告。值得注意的是:当出现一个断言失败之后,从那个断言开始后面的所有代码都不会执行
JUnit 5 内置的断言可以分成如下几个类别:

  • 简单断言在这里插入图片描述以上方法的用法如下(以assertEquals方法为例):
    在这里插入图片描述
  • 数组断言在这里插入图片描述
  • 组合断言
      组合断言需要所有的参数都满足的情况下才会通过,否则会返回出错的断言,可以以用来一个方法进行多个简单断言在这里插入图片描述
  • 异常断言
      当结果不抛出定义的异常时断言失败
    在这里插入图片描述
  • 超时断言
      当超出定义的超时时间就会返回断言在这里插入图片描述
  • 快速断言
      当符合逻辑的时候就会返回断言在这里插入图片描述

  使用断言的好处就是:可以使用以下图片中的方法将测试类的所有方法跑一遍,如果断言都通过则正常运行。否则就会返回所有的断言失败的信息
在这里插入图片描述

1.4 前置条件(assumptions)

  JUnit 5 中的前置条件(又叫假设)类似于断言,不同之处在于不满足的断言会使得测试方法失败,而不满足的前置条件只会使得测试方法的执行终止。前置条件可以看成是测试方法执行的前提,当该前提不满足时,就没有继续执行的必要。在这里插入图片描述由上图可知,前置条件与断言最大的区别就是前置条件不满足的情况下,跳过该方法继续执行别的方法,而不满足断言的话后面的代码都将不会执行

1.5 嵌套测试

  嵌套测试即是测试类中还有测试类,在这种情况下,外层的test不能驱动内层的Before(After)All(Each)方法,但是内层的test可以驱动外层的Before(After)All(Each)方法。

1.6 参数化测试

  • @ValueSource: 为参数化测试指定入参来源,支持八大基础类以及String类型,Class类型在这里插入图片描述
  • @NullSource: 为测试方法提供参数为null
  • @EnumSource: 为测试方法提供枚举参数
  • @CsvFileSource: 读取指定CSV文件内容作为参数化测试入参
  • @MethodSource: 读取指定方法的返回值作为参数化测试入参(但是该方法的返回必须是一个Stream流)在这里插入图片描述

2 指标监控

2.1 使用url实现监控

引用Actuator启动器

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

使用配置文件开启想要的端点

management:endpoints:enabled-by-default: false   # 默认开启所有的监控端点,定制化的话就需要关闭web:exposure:include: '*'      # 以web的方式暴露所有的端点endpoint:beans:enabled: truehealth:enabled: trueshow-details: alwaysinfo:enabled: truemetrics:enabled: true

使用url查看监控信息
在这里插入图片描述

2.2 可视化的监控平台

使用Spring Initializr快速创建一个SpringBoot项目,项目的pom文件加入服务监控平台的依赖,并在该项目的主程序类上加入@EnableAdminServer注解

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.3.1</version>
</dependency>

为了防止与需要监控的服务产生端口冲突,需要在配置文件中修改监控的端口号

server:port: 8888

将其他的服务注册进监控

第一步: 被监控的服务中导入依赖

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.3.1</version>
</dependency>

第二步: 被监控的服务中配置文件配置监控项目的url

spring:boot:admin:client:url: http://localhost:8888instance:prefer-ip: trueapplication:name: Project-admin_manage

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

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

相关文章

多个containers 共用一个pvc_2020阜新PVC-UH市政管厂家-烟台塑胶

2020阜新PVC-UH市政管厂家烟台金沃泉塑胶有限公司主要产品PVC-U、PVC-M、PVC-UH聚氯乙烯给给水管材、HDPE高密度聚乙烯给水管材、CPVC氯化聚氯乙烯、MPP高压电力电缆护套管、PERT-Ⅱ型热力管道、高分子托辊管、水处理膜壳管。公司为电网、南方电网、电建集团、建筑集团、五矿集…

【SpringBoot 2】(十二) profile功能 自定义starter

写在前面&#x1f6eb;更多知识总结见SpringBoot 2专栏 &#x1f695;本篇知识点总结自尚硅谷雷神的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

pb 怎么判断是 小数_考试90分以上的孩子是怎么学数学的?听听老师怎么说?

一二年级&#xff0c;考试上九十分很轻松。但是&#xff0c;不少小朋友一上三年级&#xff0c;成绩就落下来了。那么&#xff0c;我们来看看三年级起&#xff0c;考试还能够保持在90分以上的孩子是怎么学习数学的吧&#xff01;第一&#xff0c;计算能力过关通过这两张图片的对…

快速上手Mybatis-Plus 入门案例

写在前面&#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

黑苹果 选择语言 点不了_什么是天然的“黑钻”?—科普贴

天然黑钻也被成为“碳酸氢”&#xff0c;具有与白钻相同的化学成分&#xff0c;然而黑钻石的晶体结构是不同的&#xff0c;这意味着它们由许多小晶体组成&#xff0c;它们以随机的形式粘在一起&#xff0c;而不是一个具有可识别自然线的固体锥形。天然黑钻石有极高的含物&#…

sim卡没坏但苹果手机无服务_解决手机插SIM卡后都显示“无SIM卡”的故障问题

故障现象顾客描述手机插SIM卡后都显示“无SIM卡”。维修过程引起插入SIM卡却显示“无SIM卡”的故障&#xff0c;除了可能是SIM卡座的供电、时钟、复位及SIM卡插入检测信号不正常导致外&#xff0c;还有可能是基带不正常导致的。插上手机卡&#xff0c;左上角提示“无SIM卡”&am…

Mybatis-Plus实现简单的增删改查 实体类上的注解

写在前面&#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

conda失败说没有写权限_爱情中,为什么男生表白失败,女生还说可以继续做朋友,想过没有...

在爱情中&#xff0c;不是每个男生都是幸运的&#xff0c;也不是每次的表白都是如你所愿的。有成功总有失败&#xff0c;成功是喜悦的&#xff0c;但是失败却是痛苦的。不过有的时候男生和女生表白以后&#xff0c;女生对男生说了这样的一段&#xff0c;其实我希望以后我们还是…

Mybatis-Plus中Wrapper条件构造器的使用

写在前面 &#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680…

springboot设置默认值_线上Bug无法复现?老司机教你一招,SpringBoot远程调试不用愁!...

前言在部署线上项目时&#xff0c;相信大家都会遇到一个问题&#xff0c;线上的 Bug 但是在本地不会复现&#xff0c;多么无奈。此时最常用的就是取到前端传递的数据用接口测试工具测试&#xff0c;比如 POSTMAN&#xff0c;复杂不&#xff0c;难受不&#xff1f;今天陈某教你一…

Mybatis-Plus的分页 乐观锁插件 通用枚举 多数据源

写在前面&#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

等待的操作过时_不会过时的6种网站seo优化操作

SEO优化一直在变化&#xff0c;百度和谷歌的算法也在不断的迭代更新&#xff0c;所以竞争永远不会停止。今天小编就来给大家分享一下&#xff0c;6种不会过时的网站seo优化操作。1.保持正常优化为网站访客提供高质量的内容、卓越的用户体验和安全性以及卓越的技术网站。这可能需…

java的for循环取出数据只是拿到最后一个_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深

​曾几何时&#xff0c;我信誓旦旦的认为只要 SQL 写的好&#xff0c;面试过程永不倒。结果在一次又一次的征途中&#xff0c;「最终还是以完败落下帷幕」。结果都源于注重使用而忽略原理&#xff0c;从而不知也不了解「SQL」优化应如何面对。读文的你&#xff0c;如今可有这样…

SpringBoot前后端分离解决跨域问题的三种解决方案

&#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;** 文章目录&#x1f34a;什么是跨域&#x1f34a;跨域问题的解决策略&#x1f34a;三种解决方法&#x1f34a;什么是跨域 想要知道什么是跨域的话&#xff0c;我们可以通过一个小案例简单了解一下跨…

ant design vue 树形控件_官宣!vue.ant.design 低调上线

点击右上方&#xff0c;关注开源中国OSC头条号&#xff0c;获取最新技术资讯官宣&#xff01;官宣&#xff01;官宣&#xff01;是的&#xff0c;你没看错就是那个 https://vue.ant.design。至此&#xff0c;Ant Design 已经全面覆盖了 React、Angular、Vue 三大前端框架&#…

哪款笔记本电脑好_扫地机器人哪个牌子好?口碑最好的扫地机器人

随着智能家居的普及&#xff0c;让我们的生活变得越来越智能。扫地机器人的出现完美解决了宠物的毛发问题&#xff0c;为自己腾出了大量的时间。扫地机器人绝对能提升你的生活品质&#xff0c;通过机器内建的智能清洁模式、自定义规划区域进行打扫&#xff0c;使用手机APP进行控…

使用mybatisplus的通用枚举实现存储显示相分离

狡兔尚且三窟&#xff0c;多学一招总没错吧&#xff1f; &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680; &#x1f30f; 抛出问题 如果让你实现这么一个功能&#xff1a;将性别使用数字存储到数据库中&#xff0c;但是前端需要获取到的是具体的性…

JDK和JRE的区别?main方法的注意点?强制和自动类型转换?

&#x1f4a1;涉及的知识点速通&#x1f6eb; JDK和JRE傻傻分不清?&#x1f6eb; HelloWorld的输出都经历了啥&#xff1f;&#x1f6eb; Java的三个版本都是啥&#xff1f;&#x1f6eb; 关于main方法你都知道啥&#xff1f;&#x1f6eb; 强制and自动类型转换都是啥?各位小…

安卓10不支持qmc解码_Root神器支持安卓10 面具Magisk v20.4+Magisk Manager v7.5.1

Magisk的功能和xposed框架的功能差不多&#xff0c;也有很多插件可安装&#xff0c;而且自带root&#xff0c;刷入这个Magisk后你的rom同时也就有root了(支持安卓7.0&#xff0c;7.1&#xff0c;8.0&#xff0c;8.1,9,10)这也是目前安装8.1root的普遍方法&#xff0c;因为目前s…

==和equals判等、空串和null串、字符串常用API

&#x1f4a1;涉及的知识点速通&#x1f6eb; 关于变量和常量你都知道啥?&#x1f6eb; &和&&#xff06;、|和||有什么区别&#xff1f;&#x1f6eb; 关于字符串的问题你能答对几道&#xff1f;&#x1fa82; 可以修改一个字符串中的值吗?&#x1fa82; 字符串使用…