版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/83964343
说明,使用JDK8 ,springboot2.0,maven3.5.4,idea2018.2
模块目录结构:
main函数:
package com.neo.hello;
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
controller层:
package com.neo.hello.web;
/**
* @auther SyntacticSugar
* @data 2018/11/11 0011下午 8:32
*/
@RestController
public class HelloController {
/**
* @ requestMapping 路径映射信息,/hello路径下的
* 所有的Request 都会映射到 hello() 方法 进行处理
* @return
*
* http://localhost:8080/hello?name=neo 进行访问
*
*/
@RequestMapping("/hello")
public String hello(String name){
return "hello world,"+name;
}
}
spring单元测试,MockMVC 内置了很多工具类和方法,可以模拟 post、get 请求,并且判断返回的结果是否正确等,也可以利用 print() 打印执行结果,同时也可以返回请求的结果.andReturn().getResponse().getContentAsString(),返回结果在另一片博文中有具体体现;
package com.neo.hello;
// 保留了MockMvcResultHandlers的导包,print()静态的方法
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloApplicationTests {
/**
* 使用 mockmvc 对web进行单元测试;
* MockMvcBuilders.standaloneSetup(...) 中的参数需要导入 controller的实例
*
*/
private MockMvc mockMvc;
@Before
public void setUp(){
mockMvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}
/** accept(MediaType.APPLICATION_JSON_UTF8) 指定了返回的格式 json 编码utf-8
* print() 会把请求响应打印出来
* @throws Exception
*/
@Test
public void getHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.post("/hello?name=小明").
accept(MediaType.APPLICATION_JSON_UTF8))./*andDo(print());*/
andExpect(MockMvcResultMatchers.content().string(Matchers.containsString("打豆豆")));
}
/**
* andExpect()
* MockMvcResultMatchers.content(),获取到 Web 请求执行后的结果;
* - Matchers.containsString("小明"),判断返回的结果集中是否包含“小明”这个字符串。
*/
}
运行可以看到: