Wednesday, August 02, 2006

ServletUnit... Where have you been all my life?

Thanks to Joen Moreno for pointing me to this! ServletUnit is a part of HttpUnit. It allows you to test your web components without having to deploy into a container! It comes with its own container simulator! For example, if I have this Servlet:

public class TheServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
final String param = req.getParameter("param");
final PrintWriter writer = res.getWriter();
if(param != null) {
writer.write("the parameter: " + param);
} else {
writer.write("no parameter");
}
writer.flush();
}
}


My ServletUnit test code can be something like this:

public class ServletTest extends TestCase {
public void testGet() throws Exception {
final ServletRunner runner = new ServletRunner();
runner.registerServlet("myServlet", TheServlet.class.getName());
final ServletUnitClient client = runner.newClient();
final WebRequest req = new GetMethodWebRequest("http://localhost/myServlet");
final String paramSent = "swak";
req.setParameter("param", paramSent);
final WebResponse res = client.getResponse(req);
assertEquals("the parameter: " + paramSent, res.getText());
}
}


It's just an ordinary JUnit TestCase!

No comments:

Post a Comment