zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    Mysql里的isnull(),ifnull(),nullif
    懒加载数据
    MyEclipse编辑xml文件没有提示
    java-五子棋游戏源码
    Java版打字练习游戏源码
    Wpf实现图片自动轮播自定义控件
    WP8.1开发:自定义控件
    简单的UIButton按钮动画效果ios源码下载
    自定义的一款选项卡ios源码
    Aisen微博应用源码完整版
  • 原文地址:https://www.cnblogs.com/magicalSam/p/7173920.html
Copyright © 2011-2022 走看看