SpringMVC框架下Controller测试类写法

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();
    }
}

你可能感兴趣的:(SpringMVC框架下Controller测试类写法)