自动化测试空间: http://www.automationqa.com/ 性能测试讨论群:119821036

Servlet单元测试的几种方法

上一篇 / 下一篇  2012-05-22 17:20:10

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();


   // 发送请求


   WebRequest request = new GetMethodWebRequest("http://localhost/HelloWorld");
   request.setParameter("username", "testuser");


   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();


还有很多内容,我就不拷贝过来了,大家可以去下面的链接看

http://www.automationqa.com/forum.php?mod=viewthread&tid=238&fromuid=27


TAG: Servlet 单元测试

 

评分:0

我来说两句

Open Toolbar