博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在SpringMVC利用MockMvc进行单元测试
阅读量:5774 次
发布时间:2019-06-18

本文共 3686 字,大约阅读时间需要 12 分钟。

spring在线文档:

----------------------------------------------------------------------------------------------------------------

一、应用示例

package com.springapp.mvc;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.web.WebAppConfiguration;import org.springframework.test.web.servlet.MockMvc;import org.springframework.web.context.WebApplicationContext;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.result.MockMvcResultHandlers.print;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration@ContextConfiguration("file:src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml")public class AppTests {    private MockMvc mockMvc;    @SuppressWarnings("SpringJavaAutowiringInspection")    @Autowired    protected WebApplicationContext wac;    @Before    public void setup() {        this.mockMvc = webAppContextSetup(this.wac).build();//获取mockMvc实例    }    @Test    public void simple() throws Exception {        mockMvc.perform(post("/mytest"))//执行一个RequestBuilder请求                .andExpect(view().name("index2"))//验证返回视图是否是"index2"                .andDo(print()).andExpect(status().isOk());//打印结果到控制台    }}

 

二、代码解释

@WebAppConfiguration

在中有这样的解释:

@WebAppConfiguration is a class-level annotation that is used to declare that the ApplicationContext loaded for an integration test should be a .

其中文意思是:“@webappconfiguration是一级注释,用于声明一个ApplicationContext集成测试加载WebApplicationContext。

 

private MockMvc mockMvc;

在中这样解释:

Main entry point for server-side Spring MVC test support.

其中文意思是:对于服务器端的Spring MVC测试支持主入口点。

该对象可以由方法webAppContextSetup(WebApplicationContext context).build()构造。

 

org.springframework.test.web.servlet.setup.MockMvcBuilders

先介绍些:,MockMvcBuilder是用来构造MockMvc的构造器,其主要有两个实现:StandaloneMockMvcBuilder和DefaultMockMvcBuilder,分别对应之前的两种测试方式。对于我们来说直接使用静态工厂MockMvcBuilders创建即可(注:MockMvcBuilders在官方文档中并未找到):

MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,将会从该上下文获取相应的控制器并得到相应的MockMvc

MockMvcBuilders.standaloneSetup(Object... controllers):通过参数指定一组控制器,这样就不需要从上下文获取了。

 

simple方法中的代码中的方法:

perform:执行一个RequestBuilder请求,会自动执行SpringMVC的流程并映射到相应的控制器执行处理;

andExpect:添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;

andDo:添加ResultHandler结果处理器,比如调试时打印结果到控制台;

 

后记:更多参加spring的官方文档

 

附:另一种测试

package com.spring.test;import com.wql.dao.UserMapper;import com.wql.vo.User;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.annotation.Resource;/** * Created by Administrator on 15-12-11. */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:spring.xml")public class SqlTests {    @Resource    private UserMapper userMapper;    @Test    public  void test(){        User u =  userMapper.selectByPrimaryKey(1);        System.out.println(u);    }    @Test    public void test2(){        User u = new User();        u.setName("wang");        u.setPassword("112");        System.out.println(userMapper.checkLogin(u));    }}

 

 

 

 

 

转载地址:http://uehux.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
JS中比较数字大小
查看>>
jQuery插件的开发
查看>>
基础,基础,还是基础之JAVA基础
查看>>
如何成为一个C++高级程序员
查看>>
我的友情链接
查看>>
显式锁(第十三章)
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>
从案例学RxAndroid开发(上)
查看>>
Redis学习手册(内存优化)
查看>>
浅尝TensorFlow on Kubernetes
查看>>
springboot系列十 Spring-Data-Redis
查看>>
excel进行矩阵计算
查看>>
iOS: Block的循环引用
查看>>
变量声明提升1
查看>>
树莓派下实现ngrok自启动
查看>>
通过XAML Islands使Windows桌面应用程序现代化
查看>>
Javascript 深入浅出原型
查看>>
Magento XML cheatsheet
查看>>
haproxy mysql实例配置
查看>>