springboot. springcloud 代码单元测试方法.
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootHelloApplication.class) // // 指定spring-boot的启动类
@WebAppConfiguration
public class SpringbootHelloApplicationTests {
/**
* @title: 是applicationContext的子接口.
* @remark:
* @date: 2018/10/24
*/
@Autowired
public WebApplicationContext context;
/**
* jackson提供的格式化对象
*/
@Autowired
public ObjectMapper mapper;
/**
* @title: mockMvc对象, 模拟测试服务器,
* @remark: 从视图层发起请求开始, 提供从前到后的完整的测试服务.
* @date: 2018/10/24
*/
public MockMvc mockMvc;
/**
* 初始化mockMvc
*/
@Before
public void setupMockMvc() {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
}
/**
* 测试后, 很ok.
* @throws Exception
*/
@Test
public void methodTest() throws Exception {
Map<String, String> map = new HashMap<>();
map.put("name","caichangmeng");
mockMvc.perform(MockMvcRequestBuilders.post("/test") // post请求
.contentType(MediaType.APPLICATION_JSON_UTF8) // 请求格式是json
.content(mapper.writeValueAsString(map))) // 请求体内容 -> 还可以添加cookie等信息
.andExpect(MockMvcResultMatchers.status().isOk()) // 期待返回状态: ok .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8)) // 期待返回数据类型: json -> 此处可能有问题. -> 因为返回字符utf-8
.andDo(MockMvcResultHandlers.print()); // 将结果打印.
}
}