广东品牌网站设计专家,电商网站多少钱,郴州建设企业网站,推广做网站多少钱写在前面#x1f6eb;更多知识总结见SpringBoot 2专栏 #x1f695;本篇知识点总结自尚硅谷雷神的视频 #x1f692;博主对于该知识尚在学习阶段 #x1f684;如果发现存在问题请毫不吝啬的指出 #x1f680;#x1f680;扎哇太枣糕的博客首页#x1f680;#x1f680;… 写在前面更多知识总结见SpringBoot 2专栏 本篇知识点总结自尚硅谷雷神的视频 博主对于该知识尚在学习阶段 如果发现存在问题请毫不吝啬的指出 扎哇太枣糕的博客首页 文章目录1 单元测试JUnit 51.1JUnit 5简介以及使用1.2 常用的测试注解1.3 断言(assertions)1.4 前置条件assumptions1.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以前的版本的话必须引用以下两个依赖
!--测试的启动器依赖--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope
/dependency
!--兼容JUnit4版本的单元测试--
dependencygroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.hamcrest/groupIdartifactIdhamcrest-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: 为测试方法提供参数为nullEnumSource: 为测试方法提供枚举参数CsvFileSource 读取指定CSV文件内容作为参数化测试入参MethodSource 读取指定方法的返回值作为参数化测试入参(但是该方法的返回必须是一个Stream流)
2 指标监控
2.1 使用url实现监控
引用Actuator启动器
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-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注解
dependencygroupIdde.codecentric/groupIdartifactIdspring-boot-admin-starter-server/artifactIdversion2.3.1/version
/dependency为了防止与需要监控的服务产生端口冲突需要在配置文件中修改监控的端口号
server:port: 8888将其他的服务注册进监控
第一步 被监控的服务中导入依赖
dependencygroupIdde.codecentric/groupIdartifactIdspring-boot-admin-starter-client/artifactIdversion2.3.1/version
/dependency第二步 被监控的服务中配置文件配置监控项目的url
spring:boot:admin:client:url: http://localhost:8888instance:prefer-ip: trueapplication:name: Project-admin_manage