Unit testing a dispatcher servlet is essential in building a web application.
This article provides information on how to check the functionality of your custom context class and the life cycle of a dispatcher servlet without having to run the entire application.
To unit test a dispatcher servlet in Spring Framework 3.0, you must write a Test Class extending TestCase just like any other JUnit Test. Create a MockServletConfig to set your own context class.
The sample provided below allows you to check for a controller inside a custom WebApplicationContext.
Note: Servlet-api-2.5.jar and spring-test 3.0.3 was used in this testing:
public class DispatcherServletTest extends TestCase {
DispatcherServlet dispatcherServlet;
protected void setUp() throws Exception{
dispatcherServlet = new DispatcherServlet();
MockServletConfig servletConfig = new MockServletConfig(new MockServletContext(), "ServletName");
dispatcherServlet.setContextClass(MyXmlWebApplicationContext.class);
dispatcherServlet.init(servletConfig);
}
public void testControllerInContext() throws Exception{
MockHttpServletRequest request = new MockHttpServletRequest(dispatcherServlet.getServletContext(), "GET", "/validrequest.do");
MockHttpServletResponse response = new MockHttpServletResponse();
dispatcherServlet.service(request, response);
assertEquals(HttpServletResponse.SC_OK, response.getStatus());
dispatcherServlet.destroy();
}
}