前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 单元测试

SpringBoot 单元测试

作者头像
qubianzhong
发布2019-06-14 20:49:59
1K0
发布2019-06-14 20:49:59
举报
文章被收录于专栏:行者常至行者常至

添加了 spring-boot-starter-test 依赖

BaseControllerTest

代码语言:javascript
复制
package com.test;

import org.hamcrest.Matcher;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultHandler;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.*;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.WebApplicationContext;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional(transactionManager = "transactionManager", rollbackFor = Exception.class)
public class BaseControllerTest{

    @Autowired
    private WebApplicationContext wac;

    protected MockMvc mockMvc;

    protected HttpHeaders headers;

    @Before
    public void setUp() {
        headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
        headers.add("timestamp", "1555405660290.835");

        mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }


    @Test
    public void contextLoads() {
    }


    protected MockHttpServletRequestBuilder post(String url) {
        return MockMvcRequestBuilders.post(url).headers(this.headers);
    }

    protected MockHttpServletRequestBuilder get(String url) {
        return MockMvcRequestBuilders.get(url).headers(this.headers);
    }


    protected MockHttpServletRequestBuilder delete(String url) {
        return MockMvcRequestBuilders.delete(url).headers(this.headers);
    }


    protected MockHttpServletRequestBuilder put(String url) {
        return MockMvcRequestBuilders.put(url).headers(this.headers);
    }


    protected MockHttpServletRequestBuilder mutipartOfFile(String url, String filePath) throws IOException {
        File file = new File(filePath);
        FileInputStream fis = new FileInputStream(file);
        MockMultipartFile mockMultipartFile = new MockMultipartFile("file", file.getName(), "*/*", fis);
        return MockMvcRequestBuilders
                .multipart(url)
                .file(mockMultipartFile)
                .contentType(MediaType.MULTIPART_FORM_DATA)
                .headers(this.headers);
    }

    protected ViewResultMatchers view() {
        return MockMvcResultMatchers.view();
    }

    protected ModelResultMatchers model() {
        return MockMvcResultMatchers.model();
    }

    protected ResultHandler print() {
        return MockMvcResultHandlers.print();
    }

    protected StatusResultMatchers status() {
        return MockMvcResultMatchers.status();
    }

    protected ContentResultMatchers content() {
        return MockMvcResultMatchers.content();
    }

    protected CookieResultMatchers cookie() {
        return MockMvcResultMatchers.cookie();
    }

    protected JsonPathResultMatchers jsonPath(String expression, Object... args) {
        return MockMvcResultMatchers.jsonPath(expression, args);
    }

    protected <T> ResultMatcher jsonPath(String expression, Matcher<T> matcher) {
        return MockMvcResultMatchers.jsonPath(expression, matcher);
    }
}

具体业务测试类

代码语言:javascript
复制
package com.test;

import org.junit.Test;

/**
 * @author qubianzhong
 * @date 2019/5/15 21:02
 */
public class FortuneControllerTest extends BaseControllerTest{

    @Test
    public void starFortuneTest() throws Exception {
        // uri
        String uri = "/fortune/star";

        mockMvc.perform(get(uri))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.code").value(0));
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 添加了 spring-boot-starter-test 依赖
  • BaseControllerTest
  • 具体业务测试类
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档