zoukankan      html  css  js  c++  java
  • Spring Boot 2.X 如何快速集成单元测试?

    本文将详细介绍下使用Spring Boot 2.X 集成单元测试,对API(Controller)测试的过程。

    一、实现原理

    使用MockMvc发起请求,然后执行API中相应的代码,在执行的过程中使mock模拟底层数据的返回,最后结果验证。

    二、常用注解介绍

    @SpringBootTest是SpringBoot的一个用于测试的注解,通过SpringApplication在测试中创建ApplicationContext。

    @AutoConfigureMockMvc是用于自动配置MockMvc。

    @RunWith在JUnit中有很多个Runner,他们负责调用你的测试代码,每一个Runner都有各自的特殊功能,你要根据需要选择不同的Runner来运行你的测试代码。

    @Before在每个测试方法前执行,一般用来初始化方法。

    @After在每个测试方法后执行,在方法执行完成后要做的事情。

    三、主要代码

    1. 引入测试jar包
        <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    1. 测试类中添加注解和测试代码
    package com.example.helloSpringBoot;
    
    import org.junit.After;
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.MvcResult;
    import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
    import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = {HelloSpringBootApplication.class})
    @AutoConfigureMockMvc  //测试接口用
    public class HelloControllerTest {
    
        private static final Logger log = LoggerFactory.getLogger(HelloControllerTest.class);
    
        @Before
        public void testBefore(){
            log.info("测试前");
        }
    
        @After
        public void testAfter(){
            log.info("测试后");
        }
    
        @Autowired
        private MockMvc mockMvc;
    
        /**
         *  测试 /mockTest
         *
         *
         */
        @Test
        public void mockTest()throws Exception{
            MvcResult mvcResult=mockMvc.perform(MockMvcRequestBuilders.get("/mockTest")).
                    andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
            int status=mvcResult.getResponse().getStatus();
            //打印出状态码,200就是成功
            log.info("状态码="+status);
            Assert.assertEquals(200,status);
        }
    
    }
    1. 运行mockTest

    运行成功后截图如下:

    上述三步操作完成后即可实现对API(Controller)测试,有问题欢迎留言沟通哦!

    完整源码地址:https://github.com/suisui2019/helloSpringBoot

    推荐阅读

    1.Spring Boot入门-快速搭建web项目
    2.Spring Boot 2.X 整合Redis
    3.Spring Boot 2.X 如何优雅的解决跨域问题?
    4.Spring Boot 2.X 如何添加拦截器?
    5.Spring Boot 2.X 集成spring session实现session共享
    6.Redis Cluster搭建高可用Redis服务器集群
    7.为什么单线程的Redis这么快?
    8.一篇文章搞定SpringMVC参数绑定
    9.SpringMVC+Mybatis 如何配置多个数据源并切换?

    限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。

    资料传送门:  https://mp.weixin.qq.com/s/u2b_NVNuMuAPE0w4lc45fw

    关注下方公众号即可免费领取:

    Java碎碎念公众号

  • 相关阅读:
    线程
    进程2
    进程
    socketserver
    黏包
    初始网络编程
    模块
    super
    mro c3算法
    日志固定格式
  • 原文地址:https://www.cnblogs.com/haha12/p/10789738.html
Copyright © 2011-2022 走看看