给servlet写单元测试的总结收藏
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();
//

本文介绍了如何对Servlet进行单元测试,包括使用HttpUnit、Cactus、Jetty和Mock对象(EasyMock)的方式。每种方法都有其特点,HttpUnit允许脱离容器独立测试,但可能遇到特定方法的限制;Cactus虽然需要容器支持但测试流程清晰;Jetty可作为嵌入式容器方便自动化测试;而Mock对象则专注于测试内部行为,避免依赖环境。
最低0.47元/天 解锁文章
819

被折叠的 条评论
为什么被折叠?



