junit5 springboot,junit单元测试实例 springboot

  junit5 springboot,junit单元测试实例 springboot

  00-1010 1单元测试JUnit 51.1JUnit 5简介及使用1.2常用测试注释1.3断言)1.4前提条件1.5嵌套测试1.6参数测试2指标监控2.1监控2.2可视化监控平台使用url

  

目录

 

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

  Junit平台:它是在JVM上启动测试框架的基础,不仅支持JUnit自制的测试引擎,其他测试引擎也可以访问。JUnit Jupiter:提供了JUnit5新的编程模型,是JUnit5新特性的核心。包括一个在Junit平台上运行的测试引擎。JUnit Vintage:作为已经开发多年的JUint,JUnit Vintage为了照顾老项目,提供了兼容JUnit 4.x和JUnit 3.x的测试引擎。这里我们需要知道的是,Spring Boot 2.4版和更高版本移除了对JUnit Vintage的默认依赖。如果需要兼容junit4,需要自己导入。如果不导入,就不能使用junit4的函数@Test,但是JUnit5也有一个@Test注释可以完成同样的功能。

  用法:根据上面JUnit5的分析,如果你想使用JUnit5并兼容以前的JUnit版本,你必须参考以下两个依赖项。

  !-测试依赖项groupIdorg.springframework.boot/groupId artifactid spring-boot-starter-test/artifactid scope test/scope/dependency的启动程序依赖项!-与JUnit4版本兼容的单元测试-依赖groupIdorg.junit.vintage/groupId ArtifactID JUnit-vintage-engine/ArtifactID Scope Test/Scope Exclusions Exclusions groupIdorg.hamcrest/groupId artifactham crest-Core/ArtifactID/Exclusions/Dependency然后使用@SpringBootTest批注标记测试类,使用@Test标记测试方法。

  00-1010所有注释已在正式文件中定义和解释。你可以通过这个链接查看公文的链接地址。接下来,您将选择几个常用的注释进行解释和学习。

  @SpringBootTest和@Test不重复@DisplayName注意:控制台砖块显示名称

  @BeforeEach comment:每个方法都是先执行后执行@AfterEach comment:每个方法都是先执行后执行。

  @BeforeAll批注:所有方法在执行前执行@AfterAll批注:所有方法在执行后执行。值得注意的是,这两个注释的修饰方法必须用static来修饰。

  @Disable comment:测试类运行时禁用此方法,可以单独执行@Timeout comment:设置测试方法的执行时间,过了这个时间抛出异常。

  @ExtendWith annotation:设置测试类的测试驱动。@SpringBootTest批注是一个复合批注,其中底层的@ExtendWith批注指定测试类使用SpringBoot的测试驱动程序。@RepeatedTest批注:指定方法重复的次数。

  00-1010断言是一个测试

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

 

  

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

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: