版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
SpringMVC框架下Controller测试类写法
很多码友都可能遇到这种情况,经常写service层的Junit4测试类,但某一天要写Controller的测试类,是不是一下子懵逼了!Controller的测试类和我们通常写的Junit4测试类可不是同一种哦!话不多说,直接上代码:
@RunWith(SpringJUnit4ClassRunner.class)//加载SpringJunit测试
@ContextConfiguration(locations = {"classpath:/applicationContext.xml","classpath:/spring-mvc.xml"})//加载配置文件,看实际项目有啥写啥
@WebAppConfiguration//指定加载applicationContext是一个webApplicationContext
public class ControllerTest {
private MockMvc mockMvc;
private MockHttpSession session;
//集成Web环境,将会从该上下文获取相应的控制器并得到相应的MockMvc;
@Autowired
private WebApplicationContext wac;
@Before()//在执行之前完成
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); //构造MockMvc对象
session=new MockHttpSession();
SysUserSession sysUserSession=new SysUserSession();//创建session对象,不用session的时候直接删除
sysUserSession.setSetId(1);
session.setAttribute("sysUserSession",sysUserSession);
}
@Test
public void getControllerTest() throws Exception{
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/要测试的项目请求路径")
.accept(MediaType.TEXT_HTML)
.contentType(MediaType.TEXT_HTML)
.session(session))
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
}