一、@SpringBootTest单元测试实战
前言
这次来介绍下Spring Boot中对单元测试的整合使用,本篇会通过以下2点来介绍,基本满足日常需求
-
Service层单元测试
-
Controller层单元测试
正文
一般我们接口或是方法开发完成后都会用单元测试,查看我们的功能是否达到我们的要求。
简介:讲解SpringBoot的单元测试
注意:如果springboot项目创建是通过http://start.spring.io/下载的,默认已经添加了下面的这个依赖,但是如果是手动添加的则要手动加入。
1、引入相关依赖
<!--springboot程序测试依赖,如果是自动创建项目默认添加-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
1)在src/test/java下创建TestDemo
分析: 1.我们可以看一下SpringRunner的源码,继承了SpringJunit4ClassRunner
基本和SpringJunit4ClassRunner一样的,SpringRunner是springboot推荐的。
2.classes={Application.class}路径指向主程序入口
classes={XdclassApplication.class 指向启动类
2.认识几种常见的Test中的注解
1)@Test注解不用说了吧
一启动这个我们的项目也启动
2)@Before 是Test01执行前执行, @After是Test01执行后执行,一般是做资源回收的
运行后结果如下
3.现在我有多个@Test方法都要启动怎么办呢?
选中类鼠标右键Run A s
4、SpringBoot测试进阶高级篇之MockMvc讲解
简介:讲解MockMvc类的使用和模拟Http请求实战
MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
1)、增加类注解 @AutoConfigureMockMvc :就是自动帮我们配置MockMvc
@SpringBootTest(classes={Application.class})
相关API
perform:执行一个RequestBuilder请求
andExpect:添加ResultMatcher->MockMvcResultMatchers验证规则
andReturn:最后返回相应的MvcResult->Response
int status = mvcResult.getResponse().getStatus();
mvcResult返回的结果里面有很多方法,常用的是getResponse ,有兴趣的du9o去了解一下
2)现在还需要加一个controller类
3)启动项目
4)如果路径不存在
结果 404
二.SpringBoot2.x个性化启动banner设置和debug日志
简介:自定义应用启动的趣味性日志图标和查看调试日志
1、启动获取更多信息 java -jar xxx.jar --debug(这种启动方式有兴趣自己尝试)
2、修改启动的banner信息
1)在类路径下增加一个banner.txt,里面是启动要输出的信息
2)在applicatoin.properties增加banner文件的路径地址
3) 启动工程 效果如下
官网地址 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-banners
三.SpringBoot2.x配置全局异常实战
讲解:服务端异常讲解和SpringBoot配置全局异常实战
1、默认异常测试 int i = 1/0,不友好
1)
2)访问出现如下错误 这样的异常提示对用户是不友好的
出现的可能异常我们应该做全局异常,就是用java类库里面的异常区捕获
2、异常注解介绍
@ControllerAdvice 如果是返回json数据 则用 RestControllerAdvice,就可以不加 @ResponseBody
1)建立自定义异常(之后会重点介绍)
2)访问 我们的异常信息以及路径都有了,这里100就是异常的意思
3)当然我们也可以有日志去打印是哪个异常
控制台效果
四、SpringBoot2.x配置全局异常返回自定义页面
简介:使用SpringBoot自定义异常和错误页面跳转实战
1、返回自定义异常界面,需要引入thymeleaf依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
3. 在domain包下创建自定义异常
4.建立自定义异常
5. 建立一个controller
6、resource目录下新建templates,并新建error.html
7.访问
8、当然我们也可以返回一个json数据
结果
总结:当我们访问controller myExcetion方法的时候,有异常@RestControllerAdvice注解感知到之后,执行CustomExtHandler类的handleMyException方法,该方法又解析error.html文件将里面的内容返回前端。
springboot官方异常处理
https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-error-handling
本章源码: