义乌网站建设普通电脑如何做网站服务器吗
2026/4/16 3:48:41 网站建设 项目流程
义乌网站建设,普通电脑如何做网站服务器吗,新手怎么做自媒体,软件工程考研方向对模块进行集成测试时#xff0c;希望能够通过输入URL对Controller进行测试#xff0c;如果通过启动服务器#xff0c;建立http client进行测试#xff0c;这样会使得测试变得很麻烦#xff0c;比如启动速度慢#xff0c;测试验证不方便#xff0c;依赖网络环境等#…对模块进行集成测试时希望能够通过输入URL对Controller进行测试如果通过启动服务器建立http client进行测试这样会使得测试变得很麻烦比如启动速度慢测试验证不方便依赖网络环境等这样会导致测试无法进行为了可以对Controller进行测试可以通过引入MockMVC进行解决。MockMvc实现了对Http请求的模拟能够直接使用网络的形式转换到Controller的调用这样可以使得测试速度快、不依赖网络环境而且提供了一套验证的工具这样可以使得请求的验证统一而且很方便。MockMvcBuilder是用来构造MockMvc的构造器其主要有两个实现StandaloneMockMvcBuilder和DefaultMockMvcBuilder分别对应两种测试方式即独立安装和集成Web环境测试此种方式并不会集成真正的web环境而是通过相应的Mock API进行模拟测试无须启动服务器。对于我们来说直接使用静态工厂MockMvcBuilders创建即可。下面就写一个简单的案例告诉你是如何使用MockMvc进行Controller测试的01 创建项目创建一个Maven项目springboot-junit并配置pom.xml参照下面代码project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.lvgang/groupIdartifactIdspringboot-junit/artifactIdversion1.0-SNAPSHOT/versionpackagingjar/packagingnamespringboot-junit/nameurlhttp://maven.apache.org/urlparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.3.RELEASE/version/parentpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/dependency/dependencies/project创建一个Controller类我们在后面就测试空上Controller02 编写测试类下面我们就是编写测试类了package org.lvgang;import org.junit.Assert;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.http.MediaType;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.test.context.web.WebAppConfiguration;import org.springframework.test.web.servlet.MockMvc;import org.springframework.test.web.servlet.MvcResult;import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;import org.springframework.test.web.servlet.result.MockMvcResultHandlers;import org.springframework.test.web.servlet.setup.MockMvcBuilders;import org.springframework.web.context.WebApplicationContext;//SpringBoot1.4版本之前用的是SpringJUnit4ClassRunner.classRunWith(SpringRunner.class)//SpringBoot1.4版本之前用的是SpringApplicationConfiguration(classes Application.class)SpringBootTest(classes App.class)//测试环境使用用来表示测试环境使用的ApplicationContext将是WebApplicationContext类型的WebAppConfigurationpublic class HelloControllerTest {Autowiredprivate WebApplicationContext webApplicationContext;private MockMvc mockMvc;Beforepublic void setUp() throws Exception{//MockMvcBuilders.webAppContextSetup(WebApplicationContext context)指定WebApplicationContext将会从该上下文获取相应的控制器并得到相应的MockMvcmockMvc MockMvcBuilders.webAppContextSetup(webApplicationContext).build();//建议使用这种}Testpublic void getHello() throws Exception{/*** 1、mockMvc.perform执行一个请求。* 2、MockMvcRequestBuilders.get(XXX)构造一个请求。* 3、ResultActions.param添加请求传值* 4、ResultActions.accept(MediaType.TEXT_HTML_VALUE))设置返回类型* 5、ResultActions.andExpect添加执行完成后的断言。* 6、ResultActions.andDo添加一个结果处理器表示要对结果做点什么事情* 比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。* 5、ResultActions.andReturn表示执行完成后返回相应的结果。*/MvcResult mvcResult mockMvc.perform(MockMvcRequestBuilders.get(/).param(name,lvgang).accept(MediaType.TEXT_HTML_VALUE))// .andExpect(MockMvcResultMatchers.status().isOk()) //等同于Assert.assertEquals(200,status);// .andExpect(MockMvcResultMatchers.content().string(hello lvgang)) //等同于 Assert.assertEquals(hello lvgang,content);.andDo(MockMvcResultHandlers.print()).andReturn();int statusmvcResult.getResponse().getStatus(); //得到返回代码String contentmvcResult.getResponse().getContentAsString(); //得到返回结果Assert.assertEquals(200,status); //断言判断返回代码是否正确Assert.assertEquals(hello lvgang,content); //断言判断返回的值是否正确}}整个测试过程如下准备测试环境通过MockMvc执行请求添加验证断言添加结果处理器得到MvcResult进行自定义断言/进行下一步的异步请求卸载测试环境03 测试结果通过执行HelloControllerTest得到以下结果并且把整个返回结果都打印到了Console中MockHttpServletRequest:HTTP Method GETRequest URI /Parameters {name[lvgang]}Headers {Accept[text/html]}Handler:Type org.lvgang.HelloControllerMethod public java.lang.String org.lvgang.HelloController.hello(java.lang.String)Async:Async started falseAsync result nullResolved Exception:Type nullModelAndView:View name nullView nullModel nullFlashMap:Attributes nullMockHttpServletResponse:Status 200Error message nullHeaders {Content-Type[text/html;charsetUTF-8], Content-Length[12]}Content type text/html;charsetUTF-8Body hello lvgangForwarded URL nullRedirected URL nullCookies []通过以上代码我们就完成了一个简单的案例。附RequestBuilder/MockMvcRequestBuilders在上面的测试类中我们用到了这么一个类MockMvcRequestBuilders用来构建请求的此类有以下主要的APIMockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables)根据uri模板和uri变量值得到一个GET请求方式的MockHttpServletRequestBuilder如get(/user/{id}, 1L)MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables)同get类似但是是POST方法MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables)同get类似但是是PUT方法MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) 同get类似但是是DELETE方法MockHttpServletRequestBuilder options(String urlTemplate, Object... urlVariables)同get类似但是是OPTIONS方法MockHttpServletRequestBuilder request(HttpMethod httpMethod, String urlTemplate, Object... urlVariables)提供自己的Http请求方法及uri模板和uri变量如上API都是委托给这个APIMockMultipartHttpServletRequestBuilderfile Upload(String urlTemplate, Object... urlVariables)提供文件上传方式的请求得到MockMultipartHttpServletRequestBuilderRequestBuilder asyncDispatch(final MvcResult mvcResult)创建一个从启动异步处理的请求的MvcResult进行异步分派的RequestBuilderMockMvcRequestBuilders通过方法得到两类Builder一个是MockHttpServletRequestBuilder一个是MockMultipartHttpServletRequestBuilder 上传文件MockHttpServletRequestBuilder主要有以下APIMockHttpServletRequestBuilder header(String name, Object... values)/MockHttpServletRequestBuilder headers(HttpHeaders httpHeaders)添加头信息MockHttpServletRequestBuilder contentType(MediaType mediaType)指定请求的contentType头信息MockHttpServletRequestBuilder accept(MediaType... mediaTypes)/MockHttpServletRequestBuilder accept(String... mediaTypes)指定请求的Accept头信息MockHttpServletRequestBuilder content(byte[] content)/MockHttpServletRequestBuilder content(String content)指定请求Body体内容MockHttpServletRequestBuilder param(String name,String... values)请求传入参数MockHttpServletRequestBuilder cookie(Cookie... cookies)指定请求的CookieMockHttpServletRequestBuilder locale(Locale locale)指定请求的LocaleMockHttpServletRequestBuildercharacterEncoding(String encoding)指定请求字符编码MockHttpServletRequestBuilder requestAttr(String name, Object value) 设置请求属性数据MockHttpServletRequestBuilder sessionAttr(String name, Object value)/MockHttpServletRequestBuilder sessionAttrs(Mapstring, object sessionAttributes)设置请求session属性数据MockHttpServletRequestBuilder flashAttr(String name, Object value)/MockHttpServletRequestBuilder flashAttrs(Mapstring, object flashAttributes)指定请求的flash信息比如重定向后的属性信息MockHttpServletRequestBuildersession(MockHttpSession session) 指定请求的SessionMockHttpServletRequestBuilder principal(Principal principal) 指定请求的PrincipalMockHttpServletRequestBuilder contextPath(String contextPath) 指定请求的上下文路径必须以“/”开头且不能以“/”结尾MockHttpServletRequestBuilder pathInfo(String pathInfo) 请求的路径信息必须以“/”开头MockHttpServletRequestBuilder secure(boolean secure)请求是否使用安全通道MockHttpServletRequestBuilder with(RequestPostProcessor postProcessor)请求的后处理器用于自定义一些请求处理的扩展点MockMultipartHttpServletRequestBuilder继承自MockHttpServletRequestBuilder又提供了如下APIMockMultipartHttpServletRequestBuilder file(String name, byte[] content)/MockMultipartHttpServletRequestBuilder file(MockMultipartFile file)指定要上传的文件AI写代码ResultActions调用MockMvc.perform(RequestBuilder requestBuilder)后将得到ResultActions通过ResultActions完成如下三件事ResultActions andExpect(ResultMatcher matcher) 添加验证断言来判断执行请求后的结果是否是预期的ResultActions andDo(ResultHandler handler) 添加结果处理器用于对验证成功后执行的动作如输出下请求/结果信息用于调试MvcResult andReturn() 返回验证成功后的MvcResult用于自定义验证/下一步的异步处理ResultMatcher/MockMvcResultMatchersResultMatcher用来匹配执行完请求后的结果验证其就一个match(MvcResult result)断言方法如果匹配失败将抛出相应的异常具体提供以下APIHandlerResultMatchers handler()请求的Handler验证器比如验证处理器类型/方法名此处的Handler其实就是处理请求的控制器RequestResultMatchers request()得到RequestResultMatchers验证器ModelResultMatchers model()得到模型验证器ViewResultMatchers view()得到视图验证器FlashAttributeResultMatchers flash()得到Flash属性验证StatusResultMatchers status()得到响应状态验证器HeaderResultMatchers header()得到响应Header验证器CookieResultMatchers cookie()得到响应Cookie验证器ContentResultMatchers content()得到响应内容验证器JsonPathResultMatchers jsonPath(String expression, Object ... args)/ResultMatcher jsonPath(String expression, Matcher matcher)得到Json表达式验证器XpathResultMatchers xpath(String expression, Object... args)/XpathResultMatchers xpath(String expression, Mapstring, string namespaces, Object... args)得到Xpath表达式验证器ResultMatcher forwardedUrl(final String expectedUrl)验证处理完请求后转发的url绝对匹配ResultMatcher forwardedUrlPattern(final String urlPattern)验证处理完请求后转发的urlAnt风格模式匹配since spring4ResultMatcher redirectedUrl(final String expectedUrl)验证处理完请求后重定向的url绝对匹配ResultMatcher redirectedUrlPattern(final String expectedUrl)验证处理完请求后重定向的urlAnt风格模式匹配since spring4感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询