spring mvc test 常用方法整理
参考
常见写法
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
private WebApplicationContext context;
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public void test() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/test"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print()).andReturn();
}
}
输入处理
get / post 方法
mockMvc.perform(MockMvcRequestBuilders.get("/test")).andDo(MockMvcResultHandlers.print());
可以通过导包简写成如下:
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
mockMvc.perform(get("/test")).andDo(print());
mockMvc.perform(post("/test")).andDo(print());
请求参数
mockMvc.perform(post("/test").param("key", "value")).andDo(print());
请求正文
ObjectMapper om = new ObjectMapper();
String content = om.writeValueAsString(new Book("Oh java", "100"));
mockMvc.perform(post("/test")
.content(content)
.contentType(MediaType.APPLICATION_JSON))
.andDo(print());
输出处理
输出打印
mockMvc.perform(get("/test")).andDo(print());
HTTP状态码判断
.andExpect(MockMvcResultMatchers.status().isOk())
或
.andExpect(MockMvcResultMatchers.status().is(200))
打印响应正文
String ret = mockMvc.perform(MockMvcRequestBuilders.get("/test/randomBook"))
.andReturn()
.getResponse()
.getContentAsString();
System.out.println("ret:" + ret);
判断响应中某字段的值(以JSON为例)
int bookPrice = 100;
ObjectMapper mapper = new ObjectMapper();
String content = mapper.writeValueAsString(new Book("Oh java", "" + bookPrice));
String ret = mockMvc
.perform(MockMvcRequestBuilders.post("/test").content(content)
.contentType(MediaType.APPLICATION_JSON))
.andReturn()
.getResponse()
.getContentAsString();
JsonNode jsonNode = mapper.readTree(ret);
assertTrue(jsonNode.path("price").asInt() == bookPrice);
判断响应中包含/不包含特定字符串
.andExpect(content().string(not(containsString("msg"))))
.andExpect(content().string(containsString("123")))// 响应正文包含 "123"
.andExpect(content().string("123")) // 响应正文是 "123"
本文整理了Spring MVC测试中的常用方法,包括get/post请求、处理请求参数、设置请求正文,以及响应处理如打印输出、判断HTTP状态码、解析响应内容等。详细介绍了各种操作示例,帮助开发者更好地进行单元测试。

2896

被折叠的 条评论
为什么被折叠?



