如何使用 JUnit 自动化测试 mvc 接口(model)
一般正常的 restful
接口我们可以很方便的写出测试用例, 但是遇到有 Model
的 Controller
方法就比较难过了, 我之前找了很多方法(方向是如何构造 Model), 但是都没找到解决方案, 知道我偶然发现 MockMvc
这个东西, 于是就有了解决方案, 本文就讲解如何使用 Junit
进行 mvc
接口的测试
JUnit: 个回归测试框架, 方便我们对代码进行测试, 特别是在重构(修改)后验证代码的功能逻辑是否依然正确, 被开发者用于实施对应用程序的单元测试, 加快程序编制速度,同时提高编码的质量
简单讲解
难点就在与这个 Model
对象的构造, 无法使用 Spring
的自动注入来初始化 Model
, 使用 new
也不现实(这个是个接口), 所以对于这种 controller
方法要么就只测试内部的 service
逻辑, 要么就改写一下改成无 Model
参数的(破坏代码结构, 不优雅), 现在有了 MockMvc
就能自动帮我们解决这个 Model
的问题, 而且还能将生成的视图输出到 console
我们要做的就是在单元测试调用 controller
方法钱将 MockMvc
构造出来, 然后利用 MockMvc
内部的方法进行 controller
方法的调用
关键源码
引入部分
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
代码部分
-
@Before
: 测试前需要自动执行的注解(方法上) -
MockMvc
: 我们需要用到的模拟MVC
对象
private MockMvc mockMvc;
@Before
public void setup() {
// webAppContextSetup 注意上面的static import
// webAppContextSetup 构造的WEB容器可以添加fileter 但是不能添加listenCLASS
// WebApplicationContext context =
// ContextLoader.getCurrentWebApplicationContext();
// 如果控制器包含如上方法 则会报空指针
this.mockMvc = webAppContextSetup(this.wac).build();
}
接口调用写法
mockMvc.perform((get("/要测试的接口地址"))).andExpect(status().isOk()).andDo(print());
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于