使用 MockMvc完成SpringBoot2.x单元测试
1、单元测试
开发过程中单元测试是必不可少的,我们更要养成随手写配套测试用例的习惯这些随手写好的测试用例在前后端分离的微服务架构下对后期需求变动项目组件重构起到了重要的作用,尤其是现在比较流行的敏捷开发、测试驱动等领域。
2、依赖引入
(1)首先,在Spring boot工程目录下会有/src/test/java的默认路径,供我们存放测试类
找见默认路径
(2)Spring boot 2.x的脚手架也给我们提供了一个简单的测试样例
我们在SpringMVC写测试用例的时候,需要通过注解引入一些Spring配置文件
如:
@ContextConfiguration(locations = {"classpath:applicationContext.xml","classpath:applicationContext.mvc.xml"})
在Spring boot的测试中如果我们只做简单的Get和Post测试
在Spring boot中测试web应用我们只需要一行注解即可引入web上下文
@Autowired
private WebApplicationContext context;
3、测试类位置
之前我们已经写过一个Api接口UserRestfulController了,在对这个controller编写测试用例前,我们先新建一个测试类
新建测试类
4、MockMvc
使用MockMvc,我们可以完成基于RESTful风格的SpringMVC的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。
4.1 在Junit中初始化 MockMvc
@Before
public void init()throws Exception {
mvc = MockMvcBuilders.webAppContextSetup(context).build();
initData();
}
4.2 数据初始化
为了方便单点演示,我们还是使用内存中的数据完成测试,而没有连接数据库、缓存等数据源。
public void initData() throws Exception{
mvc.perform(
(MockMvcRequestBuilders.post("/User")
.param("id", "100")
.param("loginName", "yoyo")
.param("password", "123")
.param("nickName", "heihei")
)
.accept(MediaType.APPLICATION_FORM_URLENCODED))
.andExpect(status().isOk())
.andDo(print());
}
4.3 测试接口返回值是否匹配
@Test
public void testEqualTo()throws Exception {
// 测试返回值是否匹配 使用equalTo()
mvc.perform(MockMvcRequestBuilders.get("/User/ServerStatus")
.accept(MediaType.TEXT_HTML))
.andExpect(status().isOk())
.andExpect(content().string(equalTo(("ok1")))) ;
}
4.4 打印接口返回值
@Test
public void testUserList()throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/User")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andDo(print());
}
java+架构师+大数据+人工智能+Python+区块链 全阶段视频资料已经整理好了,需要的可以评论或者私信,希望给你学习带来帮你!给自己指明一个方向!
作者:A尚学堂Nancy老师
链接:https://www.jianshu.com/p/cb81b4b3635b