概述
代码
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = { "classpath:applicationContext.xml",
"file:src/main/webapp/WEB-INF/dispatcherServlet-servlet.xml" })
public class MvcTest {
@Autowired
WebApplicationContext context;
MockMvc mockMvc;
@Before
public void initMokcMvc() {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public void testPage() throws Exception {
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/messages").param("pn", "5"))
.andReturn();
MockHttpServletRequest request = result.getRequest();
PageInfo pi = (PageInfo) request.getAttribute("pageInfo");
System.out.println(pi);
}
}
配置测试环境
- 在
pom.xml
中导入Spring test
模块<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.7.RELEASE</version> </dependency>
- 注意 : Spring4 测试的时候,需要
servlet3.0
的支持<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency>
- 给测试类配置注解
@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations = { "classpath:applicationContext.xml", "file:src/main/webapp/WEB-INF/dispatcherServet-servlet.xml" })
- @RunWith(SpringJUnit4ClassRunner.class) 测试运行于Spring测试环境;
- @ContextConfiguration 加载Spring的配置文件
- @WebAppConfiguration 表明应该为测试加载WebApplicationContext,
必须
与@ContextConfiguration一起使用 - @Before 编写
测试方法执行前
的逻辑,可以初始化MockMVC实例
- @Test 标明
实际测试方法
,建议每个Controller
对应一个测试类。
在测试类中,编写测试逻辑
调用 mockMvc.perform
执行模拟请求
- 代码来源
MockHttpServletRequestBuilder createMessage = get("/messages").param("pn", "5"); mockMvc.perform(createMessage) .andExpect(status().is3xxRedirection()) .andExpect(redirectedUrl("/messages/123"));
- get请求和Controller中的方法请求类型对应
- param为传递的参数,允许多个
- andExpect为结果断言,
- isOk代表的是返回正常也就是http的200,
- view.name为返回的视图名称
- andDo为执行后操作,本例的print为打印出结果
- return返回结果,可以对结果进一步操作
关键词
springMVC整合Junit4进行单元测试
、Spring中DAO层接口的单元测试
最后
以上就是标致衬衫为你收集整理的SpringMVC : Controller层单元测试Mock的全部内容,希望文章能够帮你解决SpringMVC : Controller层单元测试Mock所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复