服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - SpringBoot2零基础到精通之JUnit 5与指标监控

SpringBoot2零基础到精通之JUnit 5与指标监控

2022-10-17 14:31扎哇太枣糕 Java教程

SpringBoot是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架,本篇让我们一起学习JUnit 5与指标监控

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注解:控制台砖展示名

SpringBoot2零基础到精通之JUnit 5与指标监控

  • @BeforeEach注解:每个方法执行之前执行@AfterEach注解:每个方法执行之后执行

SpringBoot2零基础到精通之JUnit 5与指标监控

  • @BeforeAll注解:所有方法执行之前执行@AfterAll注解:所有方法执行之后执行 值得注意的是,这两个注解的修饰的方法都必须使用static修饰

SpringBoot2零基础到精通之JUnit 5与指标监控

  • @Disable注解:在运行测试类的时候禁用这个方法,可以单独执行@Timeout注解:设置测试方法的执行时间,超过这个时间则抛异常

SpringBoot2零基础到精通之JUnit 5与指标监控

  • @ExtendWith注解:设置测试类的测试驱动,@SpringBootTest注解是个复合注解,其中底层就有
  • @ExtendWith注解指定了测试类使用的是SpringBoot的测试驱动
  • @RepeatedTest注解:指定方法重复次数

SpringBoot2零基础到精通之JUnit 5与指标监控

1.3 断言(assertions)

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

简单断言

SpringBoot2零基础到精通之JUnit 5与指标监控

以上方法的用法如下(以assertEquals方法为例):

SpringBoot2零基础到精通之JUnit 5与指标监控

数组断言

SpringBoot2零基础到精通之JUnit 5与指标监控

组合断言 组合断言需要所有的参数都满足的情况下才会通过,否则会返回出错的断言,可以以用来一个方法进行多个简单断言

SpringBoot2零基础到精通之JUnit 5与指标监控

异常断言 当结果不抛出定义的异常时断言失败

SpringBoot2零基础到精通之JUnit 5与指标监控

超时断言 当超出定义的超时时间就会返回断言

SpringBoot2零基础到精通之JUnit 5与指标监控

快速断言 当符合逻辑的时候就会返回断言

SpringBoot2零基础到精通之JUnit 5与指标监控

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

SpringBoot2零基础到精通之JUnit 5与指标监控

1.4 前置条件(assumptions)

  JUnit 5 中的前置条件(又叫假设)类似于断言,不同之处在于不满足的断言会使得测试方法失败,而不满足的前置条件只会使得测试方法的执行终止。前置条件可以看成是测试方法执行的前提,当该前提不满足时,就没有继续执行的必要。

SpringBoot2零基础到精通之JUnit 5与指标监控

由上图可知,前置条件与断言最大的区别就是前置条件不满足的情况下,跳过该方法继续执行别的方法,而不满足断言的话后面的代码都将不会执行

1.5 嵌套测试

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

1.6 参数化测试

  • @ValueSource: 为参数化测试指定入参来源,支持八大基础类以及String类型,Class类型

SpringBoot2零基础到精通之JUnit 5与指标监控

  • @NullSource: 为测试方法提供参数为null
  • @EnumSource: 为测试方法提供枚举参数
  • @CsvFileSource: 读取指定CSV文件内容作为参数化测试入参
  • @MethodSource: 读取指定方法的返回值作为参数化测试入参(但是该方法的返回必须是一个Stream流)

SpringBoot2零基础到精通之JUnit 5与指标监控

 

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: true
health:
enabled: true
show-details: always
info:
enabled: true
metrics:
enabled: true

使用url查看监控信息

SpringBoot2零基础到精通之JUnit 5与指标监控

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:8888
instance:
prefer-ip: true
application:
name: Project-admin_manage

到此这篇关于SpringBoot2零基础到精通之JUnit 5与指标监控的文章就介绍到这了,更多相关SpringBoot2 JUnit 5内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_59138417/article/details/123406904

延伸 · 阅读

精彩推荐
  • Java教程Java 对称加密几种算法分别实现

    Java 对称加密几种算法分别实现

    这篇文章主要介绍了Java 对称加密使用DES / 3DES / AES 这三种算法分别实现的相关资料,这里提供了实例代码,需要的朋友可以参考下...

    java教程网5402020-07-23
  • Java教程Springsecurity Oauth2如何设置token的过期时间

    Springsecurity Oauth2如何设置token的过期时间

    如果用户在指定的时间内有操作就给token延长有限期,否则到期后自动过期,如何设置token的过期时间,本文就来详细的介绍一下...

    往日时光--7922021-11-29
  • Java教程Fluent Mybatis 批量更新的使用

    Fluent Mybatis 批量更新的使用

    本文主要介绍了Fluent Mybatis 批量更新的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    稻草江南10582021-11-08
  • Java教程一文秒懂springboot druid 配置

    一文秒懂springboot druid 配置

    Druid是阿里巴巴开发的一个连接池,他提供了一个高效、功能强大、可扩展性好的数据库连接池,区别于hikari,今天通过本文给大家分享springboot druid 配置教...

    村头一颗草4952021-11-23
  • Java教程Java自定义长度可变数组的操作

    Java自定义长度可变数组的操作

    这篇文章主要介绍了Java自定义长度可变数组的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    miss_rong9532021-08-03
  • Java教程Spring Boot项目实战之拦截器与过滤器

    Spring Boot项目实战之拦截器与过滤器

    这篇文章主要介绍了Spring Boot项目实战之拦截器与过滤器,文中给大家详细介绍了springboot 拦截器和过滤器的基本概念,过滤器的配置,需要的朋友可以参考...

    liuxiaopeng11972021-03-29
  • Java教程一文深入解析JDBC超时机制

    一文深入解析JDBC超时机制

    恰当的JDBC超时设置能够有效地减少服务失效的时间,下面这篇文章主要给大家介绍了关于JDBC超时机制的相关资料,文中通过示例代码介绍的非常详细,需要的...

    Amis9652022-02-17
  • Java教程java 正则表达式获取两个字符中间的字符串方法

    java 正则表达式获取两个字符中间的字符串方法

    今天小编就为大家分享一篇java 正则表达式获取两个字符中间的字符串方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    铿锵玫瑰-rain10072021-05-18