• Spring Boot 系列(二)单元测试&网络请求


    实际开发中,Junit单元测试是必不可少的。在spring-boot 中可以通过测试模块(spring-boot-starter-test)快速使用单元测试功能。

    开始

    本示例在 spring boot 1.5.4 版本测试通过

    1、pom.xml中添加配置spring-boot-starter-test

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-test</artifactId>
    	<scope>test</scope>
    </dependency>
    

    2、在src/main/java目录下创建Controller

    package com.sam.demo.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author sam
     * @since 2017/7/14
     */
    @RestController
    public class IndexController {
    
        @RequestMapping("/index")
        public String index() {
            return "index";
        }
    
    }
    
    

    3、在src/test/java目录下创建Controller的测试类

    package com.sam.demo.controller;
    
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.http.MediaType;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    
    import static org.hamcrest.Matchers.equalTo;
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
    
    
    /**
     * @author sam
     * @since 2017/7/15
     */
    // >>> spring boot 1.4.0 版本之后使用以下两个配置
    @RunWith(SpringRunner.class)
    @SpringBootTest
    
    // >>> spring boot 1.4.0 版本之前使用以下三个配置
    //@RunWith(SpringJUnit4ClassRunner.class)
    //@SpringApplicationConfiguration(classes = DemoApplication.class)  //在spring boot 1.4.0 版本之后取消了 //classes需要指定spring boot 的启动类如:DemoApplication.class 不然WebApplicationContext不被实例化
    //@WebAppConfiguration
    public class IndexControllerTests {
    
    //    @Autowired
    //    private WebApplicationContext context;
    
        //mock api 模拟http请求
        private MockMvc mockMvc;
    
        //初始化工作
        @Before
        public void setUp() {
            //独立安装测试
            mockMvc = MockMvcBuilders.standaloneSetup(new IndexController()).build();
            //集成Web环境测试(此种方式并不会集成真正的web环境,而是通过相应的Mock API进行模拟测试,无须启动服务器)
            //mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
        }
    
        //测试
        @Test
        public void index() throws Exception {
            mockMvc.perform(MockMvcRequestBuilders.get("/index")
                    .accept(MediaType.APPLICATION_JSON))
                    .andExpect(status().isOk())
                    .andExpect(content().string(equalTo("index")));
        }
    
    }
    
    运行index()测试,得到以下结果:
    测试通过

    test.png

    版权声明:本文为博主原创文章,转载请注明出处。

  • 相关阅读:
    实现Callable接口(了解即可)
    多线程模拟龟兔赛跑
    多线程操作同一个对象的例子(引出并发)
    实现Runnable和Thread类的区别(建议使用Runnable)
    Autel MaxiIM IM608:如何更新和一些评论
    VIDENT iSmart900自动多系统扫描工具OBDII支持ABS / SRS / EPB /传输诊断DPF再生/上油复位编码电池配置
    2019 Red PCB KESS V5.017:支持140协议
    V2018.5 MB SD C4功能和软件详细信息更新
    (已解决)FVDI 2018“连接到服务器.....失败”“打不开设备”
    燕化迷你ACDP程序FEM / BDC
  • 原文地址:https://www.cnblogs.com/magicalSam/p/7173920.html
Copyright © 2020-2023  润新知