`

junit 测试 springmvc controller

 
阅读更多

用MockHttpServletRequest 测试spring的Controller,如果Controller的类名和要调用的方法名上都写有@RequestMapping:

@controller:

@RequestMapping("/user")
public class UserLoginMgr extends BaseController{
	@RequestMapping("/login")
	public String login(String mailbox){
           System.out.println("login");
		return "login";
	}
}

 

如果在@Test里这样写:

@Test
public void testRequest(){
        MockHttpServletRequest request = new MockHttpServletRequest();
        MockHttpServletResponse response = new MockHttpServletResponse();
        
        request.setRequestURI("/user/login");
        request.setMethod("GET");
        
        try{
            final ModelAndView mav = this.excuteAction(request, response);
            System.out.println(mav.getViewName());
            Object msg = mav.getModelMap().get("roles");
            System.out.println(" = " + msg);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

 测试时会莫名其妙的报NullPointerException。  
解决办法是为MockHttpServletRequest设置如下一个attribute:

request.setAttribute(HandlerMapping.INTROSPECT_TYPE_LEVEL_MAPPING, true);

 就没有nullpointerexception了。(原理不知)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics