在Servlet里有 request.GetParameter("username");
现在需要写一个测试类,来测试该Servlet
所以要在该测试类里给 request 赋初值

解决方案 »

  1.   

    建议你试试:
    继承 javax.servlet.http.HttpServletRequestWrapper, 在子类中重新实现 getParameter 方法, 然后在测试类中实例化这个子类, 当作 HttpServletRequest 传给要测试的 Servlet.其实测试 Servlet, 建议使用 Cactus 测试框架: http://jakarta.apache.org/cactus/
      

  2.   

    request.setParameter("username","value");
      

  3.   

    String a = request.GetParameter("username");
    if (a==null)
       a = "...";
      

  4.   

    to glassprogrammer():
     我们公司要求用JUnit来做测试,你的方法还可行吗?to kevincom(木瓜):
      好像根本就没有 setParameter("","") 这个方法哦
      

  5.   

    to kongxiangli(笑看红尘):
       我是做测试类,你这样能用吗?   就是这个意思:假如我要测Servlet的doPost方法在我的测试类里就要这样:
    testDoPost()
    {
          HttpServletRequest request = null;
          HttpServletResponse response = null;
          
          //在此如何给request赋值呢??      doPost(request,response);
    }
      

  6.   

    自己实现HttpServletRequest和HttpServletResponse,如果用到session,还要实现HttpSession,如果用到ServletContext,也要实现。如:
    public class TestRequest implements HttpServletRequest
    {
        private HashMap parameters = new HashMap();
        private HttpSession session = null;    public void setParameter(String name, String value)
       {
          parameters.put(name, value);
        }    public void setSession(HttpSession session)
        {
          this.session = session;
         }
        ...
    }public class TestResponse implements HttpServletResponse
    {
        ...
    }public class TestSession implements HttpSession
    {
        ...
    }然后在Test中:
    protected testDoPost()
    {
        TestResponse response = new TestResponse();
        TestRequest request = new TestRequest();
        TestSession session = new TestSession();    request.setSession(session);
        request.setParameter("para1", "value1");    HttpServlet servlet = new YourServlet();
        servlet.doPost(request, response);
    }
      

  7.   

    to cbhyk() :
      用你的方法在 Servlet 里不修改任何程序可以 request.getParameter(); 吗?
      是不是还用在继承类(TestRequest)里覆盖getParameter()呢?
      

  8.   

    TestRequest要实现getParameter方法,如:
    public String getParameter(String name)
    {
       return parameters.get(name);
    }如果要实现String[] getParameters(String name)方法,用HashMap实现不了,要另写代码
      

  9.   

    呵呵,是String[] getParameterValues();吧
    好了,谢谢cbhyk() 
    我回去试试
      

  10.   

    是不是可以写一个连接来测试呀,在你的连接后面加上这个变量的值就可以了
    你可以写一个jsp页里面只有一句话:<a href=".....servlet?username=\"username(变量的值)\"">xxxxx</a>
    这样你就可以通过这个连结来进入servlet同时还可以得到变量的值。这里可以传递多个变量
    我觉得比较方便
      

  11.   

    如果使用 JUnit 进行测试, 那么建议使用 Cactus 测试框架: http://jakarta.apache.org/cactus/Cactus 框架就是为 Servlet/JSP 等的 Unit test 设计的