spring3.2终于出ga版了, 发现spring test的改进最大,添加了对 springmvc的测试
看了看文档,将使用方法整理如下:
1,可以使用 @WebAppConfiguration来标明是web应用测试, @ContextConfiguration来指定配置文件,其他的和测试相同
2,主要用到三个类: 1,MockMvc及MockMvcBuilders, 用来生成当前的测试环境,后者是生成MockMvc的
2,MockMvcRequestBuilders , 模拟http请求
3,MockMvcResultMatchers ,对返回结果进行断言
3,这几个类都提供了链式操作,写代码的时候就很舒服了,代码也好看多了,下面就详细说说这几个类
3.1 MockMvcBuilders
这个类只有两个方法:DefaultMockMvcBuilder webAppContextSetup(WebApplicationContext context) 和 StandaloneMockMvcBuilder standaloneSetup(Object... controllers) ,区别是 前者依赖Spring上下文,因此这个要加载配置文件
StandaloneMockMvcBuilder 继承自 DefaultMockMvcBuilder
毕竟spring的配置文件中没有web.xml中那些filter的信息,无法完整模拟web环境, 因此 DefautlMockBuilder中有 addFilter(Filter filter) 和 addFilters(Filter ...)两个方法,还有一个RequestBuilder,可以定制默认的request, 还有一些 alwaysExpect() ,alwaysDo等方法,用于添加默认断言
配置好Builder后,然后 调用build()方法 生成 MockMvc对象, 我们就可以用来测试了
3.2 MockMvcRequestBuilders
这个类里面全是静态方法, 提供http操作方法如: get,post,delete,put,fileupload , 还有一个request方法,可以自己指定 前面那类型, 还有一个 asyncDispatch(MvcResult mvcResult),应该是异步执行,这个方法没用过,有时间看看是干嘛用的
这些方法返回的都是 RequestBuilder的子类, 针对不同http请求类型做了一些拓展,都是链式操作很方便的
3.2 MockMvcResultMatchers , 这个是对返回结果进行断言,也都是静态方法,链式操作, 这些方法返回的都是 ResultMather的子类
提供的方法有:request(),handler(), model(),view(),flash(),forwardUrl(String expectUrl),redirectUrl(String expectUrl) ,status(),header(),content(),jsonPath() ,xpath(),cookie();
jsonPath 和 xpath 是针对json和xml格式数据的,具体格式请参考 http://goessner.net/articles/JsonPath/ 这篇文章。
jsonPath 操作依赖 jsonPath类, xpath没用过应该也有相关依赖吧
下面放一个测试例子吧
public class SpringControllerTest { @Test public void json() throws Exception { MockMvc mockMvc = standaloneSetup(new PersonController()).build(); mockMvc.perform(get("/person/Lee").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().contentType("application/json")) .andExpect(jsonPath("$.name").value("Lee")).andExpect(jsonPath("$.title").value("你好")); mockMvc.perform(post("/p2/haha").param("title", "你好吧")).andExpect(status().is(302)) .andExpect(view().name("redirect:/hello")).andExpect(model().attribute("title", "你好吧")); mockMvc.perform(get("/p2/haha2").param("title", "你好吧").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()).andExpect(jsonPath("$.data[0].fullName").value("宝马-进口-x6")); } @Controller private class PersonController { @RequestMapping(value = "/person/{name}") public Object get(@PathVariable String name) { Map person = new HashMap(); person.put("name", name); person.put("title", "你好"); return ViewUtils.createJsonView(person); } @RequestMapping(value = "/p2/haha") public Object post(String name, String title) { Map person = new HashMap(); person.put("name", name); person.put("title", title); return ViewUtils.createView("redirect:/hello", person); } @RequestMapping(value = "/p2/haha2",produces=MediaType.APPLICATION_JSON_VALUE+";charset=utf-8") @ResponseBody public Object getjson(String name, String title) { List<Car> cars = Lists.newArrayList(); cars.add(EntityFactory.createCar("宝马-进口-x6", "x6", null, "进口")); JsonData data = new JsonData(); data.setData(BeanMapper.mapList(cars, CarDTO.class)); return data; } } }
相关推荐
SpringMVC是Spring框架的一个模块,专门用于处理Web请求。它采用模型-视图-控制器(Model-View-Controller,MVC)设计模式,将应用程序的业务逻辑、数据和用户界面分离,提高了代码的可维护性和可测试性。在...
### SSM框架——详细整合教程 #### 一、基本概念 **1.1 Spring** Spring 是一个开源框架,最初由 Rod Johnson 在他的著作《Expert One-On-One J2EE Development and Design》中提出部分理念和原型,随后发展成为...
SpringMVC是Spring框架的一部分,专门用于构建Web应用程序。它采用了模型-视图-控制器(Model-View-Controller,MVC)设计模式,将业务逻辑、数据展示和用户交互分离,提高了代码的可维护性和可扩展性。在SpringMVC...
通过本教程的学习,我们不仅了解了Spring框架的核心概念及其在Web开发中的应用——Spring MVC,还手动实现了Spring MVC的基本功能。这种从理论到实践的学习过程有助于加深对Spring框架的理解,并提高实际项目的开发...
SSM框架是Java Web开发中常用的三大框架——Spring、SpringMVC和Mybatis的组合,它们协同工作,构建高效、灵活的Web应用。IDEA作为Java开发的主流集成开发环境,Maven则作为项目管理和构建工具,而MySQL是常见的关系...
SpringMVC作为Spring框架的一个模块,专门用于处理Web请求。它负责模型-视图-控制器(MVC)架构中的控制器部分,接收HTTP请求,解析请求参数,并调用相应的业务逻辑进行处理。SpringMVC的核心组件包括...
### SSM框架——详细整合教程 #### 一、基本概念 **1.1 Spring** Spring 是一个开源框架,最初由 Rod Johnson 在他的著作《Expert One-On-One J2EE Development and Design》中提出部分理念和原型,随后发展成为...
SSM框架,即Spring、SpringMVC和...这个"SpringMVC精品资源-- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)"压缩包可能包含了从基础概念到实战示例的全面教程,对于学习和提升SSM框架的整合应用大有裨益。
首先,Spring框架是整个项目的基石,它提供依赖注入(DI)和面向切面编程(AOP)功能,使得应用程序的组件可以松耦合,便于管理和测试。在SSM项目中,Spring主要负责管理Bean的生命周期和装配,以及处理事务控制。 ...
### SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) #### 一、基础知识概览 **SSM框架**是由三个独立但又能紧密结合在一起的框架组成:**Spring**、**SpringMVC**和**MyBatis**。这三个框架在Java Web开发中...
本系统采用主流的Java开发框架——Spring、SpringMVC和MyBatis,结合MySQL数据库,构建了一个功能完善的OA考勤管理系统。 首先,Spring作为核心框架,负责管理应用中的对象,提供了依赖注入(DI)和面向切面编程...
### SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) #### 一、基础知识 ##### 1.1 Spring框架 Spring框架是一个开源框架,最初由Rod Johnson提出并在其著作《Expert One-On-One J2EE Development and ...
标题中的“常用框架(一):spring+springMvc+mybatis+maven”指的是在Java Web开发中常用的四大框架——Spring、SpringMVC、MyBatis和Maven的整合使用。这些框架协同工作,构建出高效、模块化且易于维护的Web应用程序...
SpringMVC是Spring框架的一部分,用于构建Web应用的模型-视图-控制器(MVC)架构。它简化了处理HTTP请求和响应,提供了模型与视图之间的解耦。通过DispatcherServlet,SpringMVC将请求分发到相应的处理器,然后通过...
本资源主要聚焦于三大主流Java企业级框架——Spring、SpringMVC和Mybatis,为初学者提供了一条清晰的学习路径。 首先,Spring框架作为Java世界中的全能选手,它不仅提供了依赖注入(DI)和面向切面编程(AOP)等核心...