SpringBoot测试类启动web环境及匹配测试

a>创建实体类Book,  引入lombok

package com.jun.controller.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {

    private int id;
    private String name;
    private String type;
    private String description;

}

b>创建控制层  ,模拟数据 ,响应JSON数据

package com.jun.controller;

import com.jun.controller.pojo.Book;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/books")
@RestController
public class BookController {

//    @GetMapping
//    public String getbyid(){
//
//        System.out.println("getbyid  is run...");
//
//        return "springboot";
//    }

    @GetMapping
    public Book getBook(){

        Book book = new Book(1, "java", "程序语言", "这是一本编程书");

        return book;
    }

}

c>在test包下创建测试类   设置web环境并开启mvc的虚拟调用

package com.jun;
import org.junit.jupiter.api.Test;
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.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
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.MockMvcResultMatchers;
//设置web环境
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
//开启mvc的虚拟调用
@AutoConfigureMockMvc
public class WebTest {

    @Test
    void testFinal(@Autowired MockMvc mvc) throws Exception {
        MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/books");
        //执行,获取actions
        ResultActions actions = mvc.perform(builder);
        //设置预期值,与真实值进行比较,成功测试通过,失败测试失败,  isok() 预期是200;
        ResultMatcher resultStatus = MockMvcResultMatchers.status().isOk();

        //设置预期值,与真实值进行比较,成功测试通过,失败测试失败,  判断响应的json是否和真实的json一样
        ResultMatcher resultJson = MockMvcResultMatchers.content().json("{\"id\":2,\"name\":\"java\",\"type\":\"程序语言\",\"description\":\"这是一本编程书\"}");

        //设置预期值,与真实值进行比较,判断响应头是否与真实值相同
        ResultMatcher resultHeader = MockMvcResultMatchers.header().string("content-Type", "application/json");

        //真实值与预期值进行匹对
        actions.andExpect(resultStatus);
        actions.andExpect(resultHeader);
        actions.andExpect(resultJson);
    }

如果预期和实际的不匹配则会报错

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值