Spring 是一个用于创建企业应用程序的流行 Java 应用程序框架。Mockmvc 被定义为服务器端 springmvc 测试的主要入口点。...-- 字符集编码--> UTF-8 json;charset=UTF-8")) //添加执行完成后的断言 .andExpect...} Content type = application/json;charset=UTF-8 Body = Hello SpringMvc!...(对返回的数据进行的判断); andReturn:最后返回相应的MvcResult;然后进行自定义验证/进行下一步的异步处理(对返回的数据进行的判断) 在上面的测试类中,我们用到了这么一个类MockMvcRequestBuilders
org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; /** * 应用程序启动类... import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult...mvcResult = mvc.perform(MockMvcRequestBuilders.get("/user")) .andExpect(MockMvcResultMatchers.status...().isOk())//模拟发送get请求 .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8...))//预期返回值的媒体类型 application/json;charset=UTF-8 .andReturn();//返回执行的请求结果 System.out.println(mvcResult.getResponse
* 7、ResultActions.andReturn表示执行完成后返回相应的结果。...*/ mockMvc.perform(MockMvcRequestBuilders .get("/hello") // 设置返回值类型为utf-8,否则默认为ISO-8859-1 ....;charset=UTF-8", Content-Length:"10"] Content type = application/json;charset=UTF-8...,添加结果处理器,比如示例中的打印;andReturn,返回验证成功后的MvcResult,用于自定义验证/下一步的异步处理。...(); //返回MvcResult Assert.assertNotNull(result.getModelAndView().getModel().get("user")); //自定义断言 3
;charset=UTF-8")) // 预期内容类型 .build(); 执行测试 MockMvc支持对常见的HTTP方法,如:GET,POST,PUT,DELETE等,甚至还支持文件上传请求....andReturn(); // 获取返回结果 Assertions.assertEquals("OK", result.getResponse().getContentAsString());...id={id}", id).accept(MediaType.APPLICATION_JSON)).andReturn(); // 方式2:通过param()方法指定参数 //MvcResult...MvcResult result = this.mockMvc.perform(post("/test/simple/post/json") .content(content)...“OK” .andDo(print()); } 相比于使用Junit的断言工具判断返回结果,在MockMvc框架中直接定义预期结果进行断言检查更加简洁。
在SpringJUnit4ClassRunner和MockMvc的帮助下,可以创建一个Web应用程序上下文来为Rest Controller文件编写单元测试。...首先,需要创建用于通过使用MockMvc创建Web应用程序上下文的Abstract类文件,并定义mapToJson()和mapFromJson()方法以将Java对象转换为JSON字符串并将JSON字符串转换为...= mvc.perform(MockMvcRequestBuilders.get(uri) .accept(MediaType.APPLICATION_JSON_VALUE)).andReturn...mvcResult = mvc.perform(MockMvcRequestBuilders.post(uri) .contentType(MediaType.APPLICATION_JSON_VALUE...mvcResult = mvc.perform(MockMvcRequestBuilders.put(uri) .contentType(MediaType.APPLICATION_JSON_VALUE
单元测试 单元测试是指对应用程序的最小可测试单元进行测试,比如一个类或一个方法。Spring Boot提供了多种测试工具,使得开发者可以轻松地编写单元测试。 1....集成测试 集成测试是指对应用程序的多个组件进行测试,比如数据库、消息队列、缓存等。Spring Boot提供了多种集成测试工具,使得开发者可以轻松地编写集成测试。 1.... test 这些依赖包含了Spring Boot Test、Spring MVC Test和Jackson JSON...mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))...在test方法中,我们使用了MockMvc发送了一个GET请求,并判断返回的状态码是否为200。最后,我们使用print方法打印了响应结果。
Test public void searchDrugSpu() throws Exception{ url = "/drug/searchDrugSpu"; json...).content(json)); MvcResult mvcResult = resultActions.andReturn(); String result = mvcResult.getResponse...().getContentAsString(); log.info("返回的数据:{}", result); Response response = new Gson...)); MvcResult mvcResult = resultActions.andReturn(); String result = mvcResult.getResponse()....getContentAsString(); log.info("返回的数据:" + result); Response response = new Gson().fromJson(
contentType:发送请求内容的序列化的格式,"application/json"表示JSON数据格式 andExpect:添加RequsetMatcher验证规则,验证控制器执行完成后结果是否正确...andDo: 添加ResultHandler结果处理器,比如调试时打印结果到控制台 andReturn: 最后返回相应的MvcResult,然后进行自定义验证/进行下一步的异步处理 上面的整个过程,我们都没有使用到...我们知道,应用程序开发离不开对数据的CRUD(增删改查),事务的ACID性可以更好保证数据的完整性,保证相关数据的同生共死。...SpringBootTest加载完整的应用程序并注入所有可能的bean,因此速度会很慢 @WebMvcTest注解主要用于controller层测试,只覆盖应用程序的controller层,@WebMvcTest...所以WebMvcTest要快得多,因为我们只加载了应用程序的一小部分。
spring-boot-starter-test test Junit:Java应用程序单元测试标准类库...AssertJ:轻量级断言类库 Mockito: Java的Mock测试框架 JsonPath:JSON操作类库 JSONNAssert:基于JSON的断言库 三.快速创建单元测试 当我们引入spring-boot-starter-test...JSON或者XML的类型数据。...MvcResult .andReturn(); //得到返回代码 int status=mvcResult.getResponse().getStatus...(); //得到返回结果 String content=mvcResult.getResponse().getContentAsString(); //断言
Spring 也提供了完善的测试框架,我们可以方便的测试Spring Web MVC应用程序。为了使用这个测试框架,我们需要添加它的依赖项。...该方法会返回一个MvcResult对象,我们可以调用该对象的各种get方法获取我们需要的信息。...MvcResult mvcResult = mockMvc.perform(post("/listUsers")).andExpect(status().isOk()).andReturn(); 如果某些期望是所有方法都需要的...UserController()) .alwaysExpect(status().isOk()) .alwaysExpect(content().contentType("application/json...;charset=UTF-8")) .build() 如果我们希望在单个控制器中添加过滤器的话,可以在建立MockMvc对象的时候指定过滤器。
mvcResult; String responseResult; JSONObject resultObj; tobj = new TestObj();...tobj.setXX(302L); mvcResult = mockMvc.perform( MockMvcRequestBuilders.post("/test.../add") .contentType("application/json") .characterEncoding...("utf-8") .content(JSONObject.toJSONString(tobj))) .andExpect(MockMvcResultMatchers.status...().is(200)) .andReturn(); responseResult = mvcResult.getResponse().getContentAsString
HttpServletResponse response) throws UnsupportedEncodingException{ request.setCharacterEncoding("UTF...password=123456 .andExpect(MockMvcResultMatchers.view().name("/jsp/success.jsp")) //期望返回的...success.jsp .andExpect(MockMvcResultMatchers.model().attributeExists("user")) //期望返回的...key) .andExpect(MockMvcResultMatchers.model().attributeDoesNotExist("list")) //期望返回的...ModelAndView中没有数据list .andReturn(); //请求执行完毕之后所有的结果保存在mvcResult中
webApplicationContext).build(); } @Test public void testLogin() throws Exception { MvcResult...mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/login") .param("email", "541075754....param("other", "A-123456789012-1234") .accept(MediaType.APPLICATION_JSON...().getStatus(); //得到返回代码 String content = mvcResult.getResponse().getContentAsString...(); //得到返回结果 log.info("返回结果content={}", content); Assert.assertEquals(200, status)
;charset=UTF-8"))) .andExpect(status().isOk()) .andExpect(content().contentType...("application/json;charset=UTF-8")) .andExpect(content().json("{'foo':'bar'}")); }...(对返回的数据进行的判断); andDo:添加ResultHandler结果处理器,比如调试时打印结果到控制台(对返回的数据进行的判断); andReturn:最后返回相应的MvcResult;然后进行自定义验证.../进行下一步的异步处理(对返回的数据进行的判断); 校验Controller处理之后,请求是否为成功状态,返回的内容是否包含了例如"{'foo':'bar'}"字符串。...1 mockMvc调用perform,调用controller的业务处理逻辑 2 perform返回ResultActions,返回操作结果,通过ResultActions,提供了统一的验证方式。
json格式,就需要这个 public Result handle(Exception e){ if(e instanceof PeopleException){...MvcResult mvcResult = resultActions.andReturn(); String result = mvcResult.getResponse...(); System.out.println("客户端获得反馈数据:" + result); } 传递的是People参数,在这里我们传参不要直接传People对象或者该对象的json...,这个isOK是200 // .andExpect(MockMvcResultMatchers.content().string("a"))//对返回值进行判断 MvcResult...MvcResult mvcResult = resultActions.andReturn(); String result = mvcResult.getResponse
断言库; JsonPath:JSON XPath操作类库; 注解 使用Mock之前,我们再来了解几个测试过程中用到的注解。...mvcResult = mvc.perform( //模拟发送 GET 请求 MockMvcRequestBuilders.get("/login/capture...MvcResult .andReturn(); 获取到返回结果之后进行解析,并保存到Redis缓存中。...登录 MvcResult mResult = mvc.perform( MockMvcRequestBuilders.post("/login")....accept(MediaType.APPLICATION_JSON_UTF8) .contentType(MediaType.APPLICATION_JSON
JSONassert: 为JSON提供了断言功能 JsonPath: 为JSON提供了XPATH功能 编写单元测试基类 @RunWith(SpringRunner.class) @SpringBootTest...protected String getMockResultStr(MockHttpServletRequestBuilder requestBuilder) { try { MvcResult...(MediaType.APPLICATION_JSON_UTF8_VALUE); return response.getContentAsString(); } catch (Exception...其中 MvcResult mvcResult = this.mockMvc .perform(requestBuilder) .andExpect(status().isOk())...andReturn:方法是执行完成后返回相应的结果。 MockMvcRequestBuilders RequestBuilder是用来构建请求的。
解决方式三:在接口上添加一套自定义注解,指定请求 url,请求方式,请求参数,返回参数等信息,再通过前端页面呈现。...json 字符串,包括所有控制类的接口的定义,然后通过 springfox 将 json 数据按照格式转化为 html 或者 pdf 文档。...文件存放路径:{}", outputDir); // 这里是生成当前项目的swagger.json MvcResult mvcResult = this.mockMvc.perform...status().isOk()) .andReturn(); MockHttpServletResponse response = mvcResult.getResponse...注解可指定接口名称,请求 url,请求方式,请求参数,请求参数类型,返回参数,返回参数类型等信息。
什么是单元测试 一个单元指的是应用程序中可测试的最小的一组源代码。 源代码中包含明确的输入和输出的每一个方法被认为是一个可测试的单元。 单元测试也就是在完成每个模块后都进行的测试。...单元测试的目的 是将应用程序的所有源代码,隔离成最小的可测试的单元,保证每个单元的正确性。 理想情况下,如果每个单元都能保证正确,就能保证应用程序整体相当程度的正确性。...testService.queryList()).thenReturn(Arrays.asList(TestEntity.builder().name("嬴政").id(0).build())); MvcResult.../ .param("name", "张三") .accept(MediaType.APPLICATION_JSON...比如说你需要调用B服务,可是B服务还没有开发完成,那么你就可以将调用B服务的那部分给Mock掉,并编写你想要的返回结果。
这里仅仅做一个入门,对返回视图和返回 Json 数据的方法进行测试演示,不会把所有的方法都介绍到,具体文档详见链接:Mock Test,本章节主要讲解以下两部分内容: 1、Mock 测试简介 2、测试用例演示...,第三个 jar 依赖是用于处理返回 Json 数据方法的,这里要明白每个 jar 的具体作用。...,另一个是返回 Json 数据的方法,下面我们会给出测试类,分别对这两个方法进行测试。...1)返回视图方法测试 @Test public void test() throws Exception { MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get...在这个方法中比较特殊的就是设置 MediaType 类型,因为都是使用 Json 格式,所以设置了 MediaType.APPLICATION_JSON,jsonPath 用于比对期望的数据是否与返回的结果一致
领取专属 10元无门槛券
手把手带您无忧上云