一. 点睛
测试是保证软件质量的关键,在之前的讲解中只是介绍了简单的测试,下面要进行一些和Spring MVC相关的测试,主要涉及控制器的测试。
为了测试Web项目通常不需要启动项目,我们需要一些Servlet相关的模拟对象,比如:MockMVC,MockHttpServletRequest,MockHttpServletResponse,MockHttpSession等。
在Spring里,我们使用@WebAppConfiguration指定加载的ApplicationContext是一个WebAppConfiguration。
在下面的示例里面借助JUnit和Spring TestContext framework,分别演示对普通页面转向形控制器和RestController进行测试。
二. 示例:
- 测试依赖
1 | 复制代码 <!-- spring-test --> |
代码解释:
这里
<scope>test</scope>说明这些包的存活是在test周期,也就是意味着发布时我们将不包含这些jar包。
- 演示服务:
在src/main/java下新增DemoService 类,代码如下所示:
1 | 复制代码package org.light4j.springMvc4.service; |
- 测试用例
在src/test/java下新建TestControllerIntegrationTests类,代码如下:
1 | 复制代码package org.light4j.springMvc4.web; |
代码解释:
①
@WebAppConfiguration注解在类上,用来声明加载的ApplicationContext是一个WebApplicationContext。它的属性指定的是Web资源的位置,默认为src/main/webapp,本例修改为src/main/resource。
②MockMvc模拟MVC对象,通过MockMvcBuilders.webAppContextSetup(this.wac).build()进行初始化。
③ 可以在测试用例中注入Spring的Bean。
④ 可注入WebApplicationContext。
⑤ 可注入模拟的http session,此处仅作演示,没有使用。
⑥ 可注入模拟的http request,此处仅作演示,没有使用。
⑦@Before在测试开始前进行的初始化工作。
⑧ 模拟向/normal进行get请求。
⑨ 预期控制返回状态为200.
⑩ 预期view的名称为page。
11 预期页面转向的真正路径为/WEB-INF/classes/views/page.jsp。
12 预期model里面的值是demoService.saySomething()返回值hello。
13.模拟向/testRest进行get请求。
14 预期返回值的媒体类型是text/plain;charset=UTF-8。
15 预期返回值的内容为demoService.saySomething()返回值hello。
此时,运行该测试,效果如下图所示:
- 编写普通控制器
在src/main/java下新增NormalController 类,代码如下所示:
1 | 复制代码package org.light4j.springMvc4.web; |
- 编写普通控制器的演示页面
在src/main/resources/view下新建page.jsp
1 | 复制代码<%@ page language="java" contentType="text/html; charset=UTF-8" |
- 编写RestController控制器
在src/main/java下新增RestController类,代码如下所示:
1 | 复制代码package org.light4j.springMvc4.web; |
- 运行测试
效果如下图所示:
三. 源代码示例:
打赏 欢迎关注人生设计师的微信公众账号
公众号ID:longjiazuoA
本文转载自: 掘金