• spring boot 学习之二(spring boot单元测试)


    这章其实挺简单,我单独拉出来是因为部分人的测试项目我并不可以用,所以单独拉出来作为重点,因为单元测试在我们开发中非常重要

    第一步 添加测试依赖

    srpingboot的单元测试非常简单,我们需要添加如下依赖

     <!-- springboot的test依赖 -->
           <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
         </dependency>

    第二步添加测试方法

    我们创建如下的类,我稍作解释

    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = HelloApplication.class)
    public class HelloTests {
        private MockMvc mvc;
        @Before
        public void setUp() throws Exception {
            mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
        }
        @Test
        public void getHello() throws Exception {
    mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                    .andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();
        }
    }

    先从标签说起

    @RunWith(SpringRunner.class) 是运行器,运行我们需要启动的SpringRunner.class类
    @SpringBootTest(classes = HelloApplication.class) 表示我们需要测试的springboot启动类

    @Before 是运行前的一个配置工作
    @Test 表示当前测试主方法

    大然后说是MockMvc

     MockMvc这个类是用来构建请求的一个类,用来作为我们测试的主要功能
        mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
      这段表示建立一个请求类型是针对HelloWorldController的。

    mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                    .andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();

      这段表示请求类型,请求路径,接收的消息类型,接收的状态码类型,最后andDo(MockMvcResultHandlers.print()这段表示将结果打印出来

    第三步启动项目查看结果

    启动测试类的时候并不用启动我们的启动器了,启动测试类会自动启动。然后我们会得到如下信息展示我们这次请求的报文信息

    MockHttpServletRequest:
    HTTP Method = GET
    Request URI = /hello
    Parameters = {}
    Headers = {Accept=[application/json]}
    Body = <no character encoding set>
    Session Attrs = {}

    Handler:
    Type = com.dhh.Controller.HelloWorldController
    Method = public java.lang.String com.dhh.Controller.HelloWorldController.helloSpringBoot()

    Async:
    Async started = false
    Async result = null

    Resolved Exception:
    Type = null

    ModelAndView:
    View name = null
    View = null
    Model = null

    FlashMap:
    Attributes = null

    MockHttpServletResponse:
    Status = 200
    Error message = null
    Headers = {Content-Type=[application/json;charset=ISO-8859-1], Content-Length=[28]}
    Content type = application/json;charset=ISO-8859-1
    Body = hello Spring ddddddddddBoot
    Forwarded URL = null
    Redirected URL = null
    Cookies = []

    到现在我们的测试就完成了

  • 相关阅读:
    express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(二)
    express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(一)
    [转载] 在阿里做了五年技术主管,我有话想说
    阿里云RDS MySql还原到本地Linux/Centos
    如何领域驱动设计?-实践感悟&总结分享
    jira + confluence 安装和破解
    RabbitMQ安装和配置
    [转]技术路线的选择重要但不具有决定性
    .Net core2.0日志组件Log4net、Nlog简单性能测试
    在微服务中使用领域事件
  • 原文地址:https://www.cnblogs.com/blackdeng/p/10701976.html
Copyright © 2020-2023  润新知