servlet的测试一般来说需要容器的支持,不是像通常的java类的junit测试一样简单, 下面通过对HelloWorld代码的测试阐述了几种servlet测试方法。
被测试的HelloWorld类的代码如下:
/**
*
被测试的servlet
*/
import
java.io.IOException;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.cactus.WebRequest;
import
org.apache.cactus.server.HttpServletRequestWrapper;
public class HelloWorld
extends HttpServlet{
public void
saveToSession(HttpServletRequest request) {
request.getSession().setAttribute("testAttribute",request.getParameter("testparam"));
}
public void
doGet(HttpServletRequest request,HttpServletResponse response) throws
IOException{
String
username=request.getParameter("username");
response.getWriter().write(username+":Hello World!");
}
public boolean authenticate(){
return
true;
}
}
以HelloWorld为例,我总结了Servlet的多种测试方法如下:
一.使用HttpUnit测试
import
com.meterware.httpunit.GetMethodWebRequest;
import
com.meterware.httpunit.WebRequest;
import
com.meterware.httpunit.WebResponse;
import
com.meterware.servletunit.InvocationContext;
import
com.meterware.servletunit.ServletRunner;
import
com.meterware.servletunit.ServletUnitClient;
import
junit.framework.Assert;
import
junit.framework.TestCase;
public class
HttpUnitTestHelloWorld extends TestCase {
protected void setUp()
throws Exception {
super.setUp();
}
protected void tearDown()
throws Exception {
super.tearDown();
}
public void
testHelloWorld() {
try
{
//
创建Servlet的运行环境
ServletRunner sr =
new ServletRunner();
//
向环境中注册Servlet
sr.registerServlet("HelloWorld",
HelloWorld.class.getName());
//
创建访问Servlet的客户端
ServletUnitClient sc
= sr.newClient();
//
发送请求
InvocationContext ic
= sc.newInvocation(request);
HelloWorld is =
(HelloWorld) ic.getServlet();
//
测试servlet的某个方法
Assert.assertTrue(is.authenticate());
//
获得模拟服务器的信息
WebResponse response
= sc.getResponse(request);
//
断言
Assert.assertTrue(response.getText().equals("testuser:Hello
World!"));
} catch (Exception e)
{
e.printStackTrace();
还有很多内容,我就不拷贝过来了,大家可以去下面的链接看