您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Spring MVC测试框架详解
SpringMVC测试框架详解——服务端测试springmvctest随着RESTfulWebService的流行,测试对外的Service是否满足期望也变的必要的。从Spring3.2开始Spring了SpringWeb测试框架,如果版本低于3.2,请使用spring-test-mvc项目(合并到spring3.2中了)。SpringMVC测试框架提供了对服务器端和客户端(基于RestTemplate的客户端)提供了支持。对于服务器端:在Spring3.2之前,我们测试时一般都是直接new控制器,注入依赖,然后判断返回值。但是我们无法连同SpringMVC的基础设施(如DispatcherServlet调度、类型转换、数据绑定、拦截器等)一起测试,另外也没有现成的方法测试如最终渲染的视图(@ResponseBody生成的JSON/XML、JSP、Velocity等)内容是否正确。从Spring3.2开始这些事情都可以完成了。而且可以测试完整的SpringMVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。对于客户端:不需要启动服务器即可测试我们的RESTful服务。1服务器端测试我的环境:JDK7、Maven3、spring4、Servlet3首先添加依赖如下是spring-context和spring-webmvc依赖:Java代码1.dependency2.groupIdorg.springframework/groupId3.artifactIdspring-context/artifactId4.version${spring.version}/version5./dependency6.7.dependency8.groupIdorg.springframework/groupId9.artifactIdspring-webmvc/artifactId10.version${spring.version}/version11./dependency版本信息:spring.version4.0.0.RELEASE/spring.version如下是测试相关的依赖(junit、hamcrest、mockito、spring-test):Java代码1.dependency2.groupIdjunit/groupId3.artifactIdjunit/artifactId4.version${junit.version}/version5.scopetest/scope6./dependency7.8.dependency9.groupIdorg.hamcrest/groupId10.artifactIdhamcrest-core/artifactId11.version${hamcrest.core.version}/version12.scopetest/scope13./dependency14.dependency15.groupIdorg.mockito/groupId16.artifactIdmockito-core/artifactId17.version${mockito.core.version}/version18.scopetest/scope19./dependency20.21.dependency22.groupIdorg.springframework/groupId23.artifactIdspring-test/artifactId24.version${spring.version}/version25.scopetest/scope26./dependency版本信息:junit.version4.11/junit.version、hamcrest.core.version1.3/hamcrest.core.version、mockito.core.version1.9.5/mockito.core.version然后准备测试相关配置实体:Java代码1.packagecom.sishuok.mvc.entity;2.importjava.io.Serializable;3.publicclassUserimplementsSerializable{4.privateLongid;5.privateStringname;6.//省略getter/setter等7.}控制器:Java代码1.packagecom.sishuok.mvc.controller;2.//省略import3.@Controller4.@RequestMapping(/user)5.publicclassUserController{6.7.@RequestMapping(/{id})8.publicModelAndViewview(@PathVariable(id)Longid,HttpServletRequestreq){9.Useruser=newUser();10.user.setId(id);11.user.setName(zhang);12.13.ModelAndViewmv=newModelAndView();14.mv.addObject(user,user);15.mv.setViewName(user/view);16.returnmv;17.}18.}XML风格配置:spring-config.xml:加载非web层组件Java代码1.?xmlversion=1.0encoding=UTF-8?2.beansxmlns=:xsi=:context=:schemaLocation=6.://://://!--通过web.xml中的org.springframework.web.context.ContextLoaderListener加载的--10.!--请参考:component-scanbase-package=com.sishuok.mvc12.context:exclude-filtertype=annotationexpression=org.springframework.stereotype.Controller/13./context:component-scan14./beansspring-mvc.xml:加载和配置web层组件Java代码1.?xmlversion=1.0encoding=UTF-8?2.beansxmlns=:xsi=:context=:mvc=:schemaLocation=7.://://://://://!--通过web.xml中的org.springframework.web.servlet.DispatcherServlet加载的--12.!--请参考:component-scanbase-package=com.sishuok.mvcuse-default-filters=false14.context:include-filtertype=annotationexpression=org.springframework.stereotype.Controller/15./context:component-scan16.mvc:annotation-driven/17.beanid=viewResolverclass=org.springframework.web.servlet.view.InternalResourceViewResolver18.propertyname=prefixvalue=/WEB-INF/jsp//19.propertyname=suffixvalue=.jsp/20./bean21./beansweb.xml配置:此处就不贴了,请前往github查看。对于context:component-scan注意事项请参考《context:component-scan扫描使用上的容易忽略的use-default-filters》和《第三章DispatcherServlet详解——跟开涛学SpringMVC》。等价的注解风格配置:AppConfig.java:等价于spring-config.xmlJava代码1.packagecom.sishuok.config;2.3.importorg.springframework.context.annotation.ComponentScan;4.importorg.springframework.context.annotation.Configuration;5.importorg.springframework.context.annotation.FilterType;6.importorg.springframework.stereotype.Controller;7.8.@Configuration9.@ComponentScan(basePackages=com.sishuok.mvc,excludeFilters={10.@ComponentScan.Filter(type=FilterType.ANNOTATION,value={Controller.class})11.})12
本文标题:Spring MVC测试框架详解
链接地址:https://www.777doc.com/doc-4104795 .html