当前位置: 首页 > wzjs >正文

怎么用自己的电脑建设网站安卓优化大师手机版下载

怎么用自己的电脑建设网站,安卓优化大师手机版下载,用什么做网站更快捷方便,php语言网站开发目录 一、基本概念 二、主要特点 三、使用场景 四、工作原理 五、示例代码 接口创建 测试类创建 六、注解解释 AutoConfigureMockMvc WebMvcTest 一、基本概念 MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用…

目录

一、基本概念

二、主要特点

三、使用场景

四、工作原理

五、示例代码

接口创建

测试类创建 

六、注解解释

@AutoConfigureMockMvc

@WebMvcTest


一、基本概念

MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用。它允许开发者创建一个虚拟的HTTP环境,发送各种HTTP请求,并验证控制器的处理结果。通过MockMvc,开发者可以模拟用户的请求行为,测试控制器层的业务逻辑,而不需要启动完整的Web服务器。 

二、主要特点

  1. 无需启动服务器:MockMvc可以在不启动实际服务器的情况下对Spring MVC控制器进行测试,从而加快了测试速度并减少了测试环境的复杂性。
  2. 支持多种HTTP请求:MockMvc支持GET、POST、PUT、DELETE等多种HTTP请求方法,可以模拟用户在实际应用中可能发出的各种请求。
  3. 验证响应结果:MockMvc提供了丰富的验证工具,可以对控制器的响应状态码、响应体、响应头等进行验证,确保控制器的行为符合预期。
  4. 易于集成:MockMvc可以与其他测试框架(如JUnit)和测试工具(如Hamcrest)结合使用,提供了灵活的测试选项。

三、使用场景

  1. 单元测试:对控制器层进行单元测试,验证控制器的业务逻辑是否正确。
  2. 集成测试:虽然MockMvc测试更接近集成测试(因为它测试了控制器、视图和模型的交互),但由于它不需要部署应用程序或连接到数据库,因此通常仍然被归类为单元测试。然而,通过MockMvc,开发者可以在一定程度上模拟集成测试的场景。
  3. 接口调试:在没有实际后端服务的情况下,使用MockMvc可以测试控制器与后端服务的交互,帮助开发者调试和验证接口行为。

四、工作原理

  1. 构造MockMvc实例:使用MockMvcBuilder构造一个MockMvc的实例,或者在测试类上添加@WebMvcTest注解后通过自动注入创建MockMvc实例。
  2. 执行测试:通过MockMvc的perform方法执行一个HTTP请求,该方法接受一个RequestBuilder对象的参数,用于调用控制器的业务处理逻辑。
  3. 获得返回结果对象:perform方法返回一个实现了ResultActions接口的对象(即控制器的响应结果),开发者可以在该对象上进行下一步的操作,如进行验证、执行一个处理或继续将结果封装为MvcResult对象。
  4. 对结果进行验证:对ResultActions对象进行验证时,接受一个实现了ResultMatcher接口的对象作为参数。开发者可以实现两种验证方式:对请求结果进行验证或对请求返回的内容进行验证。

五、示例代码

接口创建

  • 创建一个简单的Controller接口,获取版本结束时间

@RestController
@RequestMapping("/MockMvc")
public class MockMvcController {@Autowiredprivate AITestService aITestService;@PostMapping(value = "/getGroupVersionEndTime")public String getGroupVersionEndTime(@RequestBody GetGroupVersionEndTimeRequest request)   {return aITestService.getGroupVersionEndTime(request);}
}

测试类创建 

创建测试类,使用MockMvc进行测试,这里有两种不同的测试方式

  • 一种是使用@AutoConfigureMockMvc@SpringBootTest一起使用,用于集成测试。它会自动配置MockMvc实例,且测试范围是整个Spring Boot应用程序的上下文。这意味着在测试过程中,会加载整个应用程序的Bean和配置,包括服务层、数据层等组件。因此,这种测试方式相对较重,但能够更全面地验证应用程序的行为。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class MockMvcControllerTest {@Autowiredprivate MockMvc mockMvc;@Testpublic void testGetGroupVersionEndTime() throws Exception {String request = "{\"allocateGroupCode\":\"G000000003\",\"effStartTime\":\"2020-08-05\",\"effStatus\":\"A\"}";MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/MockMvc/getGroupVersionEndTime").contentType("application/json;charset=UTF-8").content(request)).andDo(MockMvcResultHandlers.print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(MockMvcResultMatchers.jsonPath("$.responseMsg").value("请求成功")).andReturn();String content = mvcResult.getResponse().getContentAsString();System.out.println(content);}
}
  •  一种是使用@WebMvcTest这个注解专门用于测试Spring MVC的控制器层。它会自动配置与MVC相关的组件,如控制器、视图解析器、消息转换器等,但不会加载整个应用程序的上下文。因此,@WebMvcTest提供了一种轻量级的测试方式,专注于控制器层的行为验证,可以理解为切片测试。
import static org.mockito.Mockito.when;@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(MockMvcController.class)
public class MockMvcControllerWebMvcTest {@Autowiredprivate MockMvc mockMvc;@MockBeanprivate AITestService aiTestService; // 如果控制器依赖于服务,可以使用@MockBean注解来模拟这些服务@Testpublic void testGetGroupVersionEndTime() throws Exception {String request1 = "{\"allocateGroupCode\":\"G000000003\",\"effStartTime\":\"2020-08-05\",\"effStatus\":\"A\"}";GetGroupVersionEndTimeRequest request = new GetGroupVersionEndTimeRequest();request.setAllocateGroupCode("G000000003");request.setEffStartTime("2020-08-05");request.setEffStatus("A");// 模拟服务方法的返回值when(aiTestService.getGroupVersionEndTime(request)).thenReturn("2025-02-26");MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/MockMvc/getGroupVersionEndTime").contentType("application/json;charset=UTF-8").content(request1)).andDo(MockMvcResultHandlers.print()).andExpect(MockMvcResultMatchers.status().isOk()).andReturn();String content = mvcResult.getResponse().getContentAsString();System.out.println(content);}
}

六、注解解释

@AutoConfigureMockMvc

1. 功能

  • @AutoConfigureMockMvc是一个自动配置注解,用于自动配置MockMvc实例。
  • 它通常与其他测试注解(如@SpringBootTest)一起使用,以便在集成测试中模拟HTTP请求。

2. 使用场景

  • 适用于需要完整Spring Boot上下文的集成测试。
  • 可以测试整个应用程序的MVC层,包括控制器、服务、存储库等。

3. 特点

  • 自动配置MockMvc实例,无需手动创建。
  • 可以与@SpringBootTest结合使用,加载完整的应用程序上下文。

@WebMvcTest

1. 功能

  • @WebMvcTest是一个切片测试注解,专门用于测试Spring MVC控制器层。
  • 它会自动配置Spring MVC基础设施,但不会加载完整的应用程序上下文。

2. 使用场景

  • 适用于只需要测试控制器层的单元测试。
  • 可以快速测试控制器的行为,而不需要启动整个应用程序。

3. 特点

  • 只加载与MVC相关的组件,如控制器、过滤器、拦截器等。
  • 默认情况下,不会加载服务层和存储库层的bean,可以通过@MockBean注解手动模拟这些依赖。
  • 提供了更快的测试启动时间和更轻量级的测试环境。

总结

  • @AutoConfigureMockMvc适用于需要完整Spring Boot上下文的集成测试,可以测试整个应用程序的MVC层。
  • @WebMvcTest适用于只需要测试控制器层的单元测试,提供更快的测试启动时间和更轻量级的测试环境。

选择哪个注解取决于你的测试需求:

  • 如果你需要测试整个应用程序的MVC层,并且需要完整的Spring Boot上下文,使用@AutoConfigureMockMvc
  • 如果你只需要测试控制器层的行为,并且希望测试环境更轻量级,使用@WebMvcTest

综上所述,MockMvc是一个强大的测试工具,可以帮助开发者高效地测试Spring MVC控制器的行为。通过模拟HTTP请求和验证响应结果,开发者可以确保控制器的业务逻辑正确无误。 

 

http://www.dtcms.com/wzjs/460227.html

相关文章:

  • 做日本代购的网站百度地址
  • 做暧暧暖网站日本上海企业seo
  • 大连网站建设培训班windows优化大师是电脑自带的吗
  • 淄博网站建设企业婚恋网站排名前10
  • wordpress无法选择数据库百度网站关键词优化
  • pageadmin下载郑州搜索引擎优化
  • 钦北区网站建设百度文库个人登录
  • 成都建设网站的公司外贸营销网站怎么建站
  • 2022网页游戏网站seo排名优化工具
  • 怎样让百度收录自己的网站福州百度推广开户
  • 网站开发工程师前景分析东莞营销网站建设
  • 公司网站如何被百度快照营销推广方案ppt案例
  • 网站开发建设招聘要求app引导页模板html
  • 做网站被骗算诈骗吗新闻头条最新消息今天
  • 建设银行招聘网站甘肃分行百度搜索seo优化技巧
  • 新疆乌鲁木齐专业做网站的公司论文关键词
  • b2c商城网站建设价格整合营销案例举例说明
  • 网站icp备案号宁波seo外包平台
  • 网站客服模版sem
  • 青岛做教育的网站建设app推广项目
  • 网站开发费属于无形资产那部分免费注册推广网站
  • 深圳网站建设 罗湖网络营销案例分析ppt
  • 网站 演示代码百度指数分析数据
  • 建设网站的一般过程开发客户的70个渠道
  • 制作网站如何选择主机网站制作推广
  • 凡科删除建设的网站今日头条新闻消息
  • 城乡住房和城乡建设部网站首页seo服务如何收费
  • 安装网站系统登封网络推广
  • 兴化建设局网站2021年经典营销案例
  • 公司做网站费用百度一下百度搜索百度一下