专栏首页技术专栏SpringBoot restful api的单元测试

SpringBoot restful api的单元测试

1.添加Springboot测试注解

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserControllerTest {
}

2.伪造mvc环境

  // 注入Spring 工厂
    @Autowired
    private WebApplicationContext wac;
  //伪造mvc环境
    private MockMvc mockMvc;
   @Before
    public void setup(){
        mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }

3.引入静态方法

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

3.编写测试方法

@Test
    public void whenXXXXSuccess() throws Exception {
        //模拟发送请求
        String result =
        mockMvc.perform(get("/user") //发往/user的get请求,可以换成post,put,delete方法执行相应请求
                        .param("username","xxx")  //get请求时填写参数的位置
                        .contentType(MediaType.APPLICATION_JSON_UTF8)  //utf编码
                        .content(content)) //post和put请求填写参数的位置
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.length()").value(3))  //期望的json返回结果
                .andReturn().getResponse().getContentAsString();  //对返回字符串的json内容进行判断
        log.info(result);
    }

这里是具体的jsonpath语法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • springboot static静态资源访问不到及NoHandlerFoundException没有出发的感悟

    就可以让404抛出NoHandlerFoundException了,能抛出就能捕获,试了下的确很管用

    Meet相识
  • Hadoop 伪分布式安装部署

    使得环境变量生效: source ~/.bash_profile 验证java是否配置成功: java -v 详细请参考 http://blog.csdn....

    Meet相识
  • java程序 如何优雅地读取xml文件

    Meet相识
  • spring中通过配置文件注入的方法

    2.通过配置文件注入的方法 上面的注入方法是通过@Service的注解方法。类似的还有@Repository、@Component、@Constroller,功...

    马克java社区
  • js实现碰撞检测

    星辉
  • 面试官,不要再问我“Java虚拟机类加载机制”了

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    用户1161110
  • Python的故事_three

    今天突然想起来偶尔看到的一句话:人啊 平日总是闲 以至于稍微一努力就以为拼命 有时候还会后悔一波数学没有学习好 数学的思维逻辑不行 小编程虽然算不上算法 ...

    py3study
  • 传统的项目经理在敏捷开发中怎么弄?

    非常好的一篇文章,为了自己学习和方便大家,翻译了一下~~ Who handles conventional project manager duties in ...

    麦克-堂
  • 获取SpringCloud gateway 响应的response的值,可以查看、修改

    gateway获取、修改客户端请求Request的参数,我们在上一篇已经讲过了。那么网关发起请求后,微服务返回回来的response的值,还是要经过网关才发给客...

    天涯泪小武
  • 分布式系统「全链路日志追踪」实战之 RestTemplate & Feign

    (图片来源于 Google Dapper 的一篇论文,这是链路追踪理论基础的鼻祖)这张图看上去感觉很高大上的样子 ,但精髓在于日志追踪架构设计思维。即设计思维很...

    IT技术小咖

扫码关注云+社区

领取腾讯云代金券