欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springmvc单元测试

程序员文章站 2022-04-29 16:45:25
...

package test;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
import org.junit.BeforeClass;   
import org.springframework.mock.web.MockServletContext;   
import org.springframework.web.context.WebApplicationContext;   
import org.springframework.web.context.support.XmlWebApplicationContext;   
import org.springframework.web.servlet.HandlerAdapter;   
import org.springframework.web.servlet.HandlerExecutionChain;   
import org.springframework.web.servlet.HandlerMapping;   
import org.springframework.web.servlet.ModelAndView;   
import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter;   
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;   
/**   
* 说明: JUnit测试action时使用的基类  
*   
* @author  赵磊  
* @version 创建时间:2011-2-2 下午10:27:03    
*/    
public class JUnitActionBase {   
    private static HandlerMapping handlerMapping;   
    private static HandlerAdapter handlerAdapter;   
    /**  
     * 读取spring3 MVC配置文件  
     */  
    @BeforeClass  
 public static void setUp() {   
        if (handlerMapping == null) {   
            String[] configs = { "file:src/springConfig/springMVC.xml" };   
            XmlWebApplicationContext context = new XmlWebApplicationContext();   
            context.setConfigLocations(configs);   
            MockServletContext msc = new MockServletContext();   
            context.setServletContext(msc);         context.refresh();   
            msc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, context);   
            handlerMapping = (HandlerMapping) context   
                    .getBean(DefaultAnnotationHandlerMapping.class);   
            handlerAdapter = (HandlerAdapter) context.getBean(context.getBeanNamesForType(AnnotationMethodHandlerAdapter.class)[0]);      
        }   
    }   
  
    /**  
     * 执行request对象请求的action  
     *   
     * @param request  
     * @param response  
     * @return  
     * @throws Exception  
     */  
    public ModelAndView excuteAction(HttpServletRequest request, HttpServletResponse response)   
 throws Exception {   
        HandlerExecutionChain chain = handlerMapping.getHandler(request);   
        final ModelAndView model = handlerAdapter.handle(request, response,   
                chain.getHandler());   
        return model;   
    }   
}  
package test.com.app.user;  
import org.junit.Assert;  
import org.junit.Test;  
import org.springframework.mock.web.MockHttpServletRequest;  
import org.springframework.mock.web.MockHttpServletResponse;  
import org.springframework.web.servlet.ModelAndView;  
  
import test.JUnitActionBase;  
  
/**  
* 说明: 测试OrderAction的例子 
*  
* @author  赵磊  
* @version 创建时间:2011-2-2 下午10:26:55   
*/   
  
public class TestOrderAction extends JUnitActionBase {  
    @Test  
    public void testAdd() throws Exception {  
    MockHttpServletRequest request = new MockHttpServletRequest();  
        MockHttpServletResponse response = new MockHttpServletResponse();  
        request.setServletPath("/order/add");  
        request.addParameter("id", "1002");  
        request.addParameter("date", "2010-12-30");  
        request.setMethod("POST");  
        // 执行URI对应的action  
        final ModelAndView mav = this.excuteAction(request, response);  
        // Assert logic  
        Assert.assertEquals("order/add", mav.getViewName());  
        String msg=(String)request.getAttribute("msg");  
        System.out.println(msg);  
    }  
}