springboot2.x简单详细教程--单元测试及自定义异常(第四章)

一、@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

本章源码:

https://download.csdn.net/download/jianchilu/10702887

猜你喜欢

转载自blog.csdn.net/jianchilu/article/details/82846164