#spring boot 之Controller简单单元测试(RESTful API)
MocMvc做为服务端测试类,功能十分强大;在spring全家桶中,在springMVC和springboot中都可以使用,用法十分相似。
- 首先需要在pom.xml中加入依赖配置。
|
|
###第一种使用注解方法注入MocMvc
//@RunWith(SpringJUnit4ClassRunner.class) SpringRunner extends SpringJUnit4ClassRunner
@RunWith(SpringRunner.class)
@WebAppConfiguration //支持web项目注解
@SpringBootTest////(classes = DemoApplication.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK)指定SpringBoot工程的Application启动类
@AutoConfigureMockMvc
public class TestController {
@Autowired
private MockMvc mockMvc;
@Autowired
private UserService userService;
@Test
public void testUser() throws Exception {
//提交请求 构建RequestBuilder对象,模拟request请求
RequestBuilder request = null;
request = MockMvcRequestBuilders.get("/");
mockMvc.perform(request).andExpect(status().isOk()).andReturn();
mockMvc.perform((post("/hello"))).andExpect(status().isOk())
.andDo(print()).andReturn();
}
###第二种手动注入MocMvc(分为集成web环境和独立测试方式)
|
|
1、@WebAppConfiguration:测试环境使用,用来表示测试环境使用的ApplicationContext将是WebApplicationContext类型的;value指定web应用的根;
2、通过@Autowired WebApplicationContext wac:注入web环境的ApplicationContext容器;
3、然后通过MockMvcBuilders.webAppContextSetup(wac).build()创建一个MockMvc进行测试;
- 几个常用的方法:
perform:执行一个RequestBuilder请求,会自动执行SpringMVC的流程并映射到相应的控制器执行处理;
andExpect:添加ResultMatcher验证规则,验证控制器执行完成后结果是否正确;
andDo:添加ResultHandler结果处理器,比如调试时打印结果到控制台;
andReturn:最后返回相应的MvcResult;然后进行自定义验证/进行下一步的异步处理;
- 参考