`

servlet 单元测试

阅读更多

写了个Servlet的测试用例,初学单元测试,大家帮我看看。

关键字: servlet 单元测试 mock easymock2 junit4

用的JUnit是4.4版,EasyMock2.3。

这是Servlet:
Java代码 复制代码
  1. package net.javayuan.servlet;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. import javax.servlet.ServletException;   
  6. import javax.servlet.http.HttpServlet;   
  7. import javax.servlet.http.HttpServletRequest;   
  8. import javax.servlet.http.HttpServletResponse;   
  9.   
  10. /**  
  11.  * @(#)LoginServlet.java 2008-6-4 下午11:39:05  
  12.  *   
  13.  * @author Yuan  
  14.  * LoginServlet  
  15.  */  
  16. public class LoginServlet extends HttpServlet {   
  17.   
  18.     /**  
  19.      *   
  20.      */  
  21.     private static final long serialVersionUID = -7068817837964223972L;   
  22.   
  23.     @Override  
  24.     public void doPost(HttpServletRequest request, HttpServletResponse response)   
  25.     throws IOException,ServletException{   
  26.         String username = request.getParameter("username").trim();   
  27.         String password = request.getParameter("password");   
  28.         if ("yuan".equals(username) && "123456".equals(password))   
  29.             response.sendRedirect("welcome.jsp");   
  30.         else  
  31.             response.sendRedirect("error.jsp");   
  32.     }   
  33. }  
package net.javayuan.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @(#)LoginServlet.java 2008-6-4 下午11:39:05
 * 
 * @author Yuan
 * LoginServlet
 */
public class LoginServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7068817837964223972L;

	@Override
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	throws IOException,ServletException{
		String username = request.getParameter("username").trim();
		String password = request.getParameter("password");
		if ("yuan".equals(username) && "123456".equals(password))
			response.sendRedirect("welcome.jsp");
		else
			response.sendRedirect("error.jsp");
	}
}


这是Test Case:
Java代码 复制代码
  1. package net.javayuan.servlet;   
  2.   
  3. import static org.easymock.EasyMock.*;   
  4.   
  5. import java.io.IOException;   
  6.   
  7. import org.junit.Test;   
  8. import org.junit.After;   
  9. import org.junit.Before;   
  10.   
  11. import javax.servlet.ServletException;   
  12. import javax.servlet.http.HttpServletRequest;   
  13. import javax.servlet.http.HttpServletResponse;   
  14. /**  
  15.  * @(#)LoginServlet.java 2008-6-5 上午09:19:42  
  16.  *   
  17.  * @author Yuan  
  18.  * LoginServlet Test Case  
  19.  */  
  20. public class LoginServletTest {   
  21.   
  22.     private LoginServlet servlet;   
  23.     private HttpServletRequest mockRequest;   
  24.     private HttpServletResponse mockResponse;   
  25.        
  26.     @Before  
  27.     public void setUp(){   
  28.            
  29.         servlet = new LoginServlet();   
  30.            
  31.         //创建request和response的Mock   
  32.         mockRequest = createMock(HttpServletRequest.class);   
  33.         mockResponse = createMock(HttpServletResponse.class);   
  34.     }   
  35.        
  36.     @After  
  37.     public void tearDown(){   
  38.            
  39.         //为了验证指定的调用行为确实发生了,要调用verify(mock)进行验证。   
  40.         verify(mockRequest);   
  41.         verify(mockResponse);   
  42.     }   
  43.   
  44.     /**  
  45.      * 测试doPost方法  
  46.      * @throws IOException  
  47.      * @throws ServletException  
  48.      * */  
  49.     @Test  
  50.     public void testDoPost() throws IOException, ServletException{   
  51.            
  52.         //录制request和response的动作   
  53.         mockRequest.getParameter("username");   
  54.         expectLastCall().andReturn("yuan");//设置前一方法被调用时的返回值   
  55.            
  56.         mockRequest.getParameter("password");   
  57.         expectLastCall().andReturn("123456");   
  58.            
  59.         mockResponse.sendRedirect("welcome.jsp");   
  60.            
  61.         //回放   
  62.         replay(mockRequest);   
  63.         replay(mockResponse);   
  64.            
  65.         //开始测试Servlet的doPost方法   
  66.         servlet.doPost(mockRequest, mockResponse);   
  67.     }   
  68.        
  69. }  
package net.javayuan.servlet;

import static org.easymock.EasyMock.*;

import java.io.IOException;

import org.junit.Test;
import org.junit.After;
import org.junit.Before;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @(#)LoginServlet.java 2008-6-5 上午09:19:42
 * 
 * @author Yuan
 * LoginServlet Test Case
 */
public class LoginServletTest {

	private LoginServlet servlet;
	private HttpServletRequest mockRequest;
	private HttpServletResponse mockResponse;
	
	@Before
	public void setUp(){
		
		servlet = new LoginServlet();
		
		//创建request和response的Mock
		mockRequest = createMock(HttpServletRequest.class);
		mockResponse = createMock(HttpServletResponse.class);
	}
	
	@After
	public void tearDown(){
		
		//为了验证指定的调用行为确实发生了,要调用verify(mock)进行验证。
		verify(mockRequest);
		verify(mockResponse);
	}

	/**
	 * 测试doPost方法
	 * @throws IOException
	 * @throws ServletException
	 * */
	@Test
	public void testDoPost() throws IOException, ServletException{
		
		//录制request和response的动作
		mockRequest.getParameter("username");
		expectLastCall().andReturn("yuan");//设置前一方法被调用时的返回值
		
		mockRequest.getParameter("password");
		expectLastCall().andReturn("123456");
		
		mockResponse.sendRedirect("welcome.jsp");
		
		//回放
		replay(mockRequest);
		replay(mockResponse);
		
		//开始测试Servlet的doPost方法
		servlet.doPost(mockRequest, mockResponse);
	}
	
}

分享到:
评论

相关推荐

    Servlet Filter 的单元测试

    在实际的开发环境中,"Servlet UT"可能表示Servlet单元测试的相关代码,包括Filter的测试类和测试方法。这些文件应包含如何配置和运行测试的细节,以及期望的测试结果。 总的来说,Servlet Filter的单元测试是一个...

    Struts2之Servlet API及单元测试初识案例struts005

    在这个“Struts2之Servlet API及单元测试初识案例struts005”中,我们将探讨Struts2如何与Servlet API结合使用,以及如何进行单元测试。 Servlet API是Java EE平台的核心部分,用于构建动态Web应用程序。Struts2...

    junit_MockServlet例子

    通过这个例子,开发者可以学习如何利用JUnit和MockServlet进行更有效的Servlet单元测试,提高代码质量,减少因依赖服务器环境带来的测试难题。同时,了解和实践这些测试方法,也有助于提升整体的开发效率和项目的可...

    HTTP 通信测试或者JAVAServlet测试

    为了完成这些测试,开发者可以使用各种工具,例如Postman用于模拟HTTP请求,浏览器的开发者工具来检查网络请求和响应,以及JUnit等单元测试框架来自动化Java Servlet的测试。 总的来说,HTTP通信测试和Java Servlet...

    easymock-request.getParamsNames

    总的来说,Easymock 在Servlet单元测试中扮演了重要角色,它使得我们能够在控制环境中测试Servlet的参数处理逻辑,而无需实际的HTTP服务器。通过模拟 `HttpServletRequest` 并设定其行为,我们可以确保即使在复杂的...

    spring mvc的简单单元测试

    单元测试是软件开发过程中不可或缺的一部分,它允许开发者独立地测试代码的各个部分,确保它们按照预期工作。Spring MVC 提供了对单元测试的良好支持,使得我们可以方便地测试控制器、服务层以及数据访问层。 在...

    servlet测试jar包

    `junit`和`easymock`是两个非常重要的Java测试工具,它们可以帮助我们有效地对Servlet进行单元测试和模拟测试。 `junit`是一个流行的开源单元测试框架,它为Java程序员提供了一种方便的方式来编写和运行可重复的...

    单元测试的总结

    单元测试是软件开发过程中的重要环节,它允许开发者对代码的各个部分进行独立验证,确保它们按照预期工作。在Web开发中,传统的测试方法通常涉及启动整个Web服务器,执行测试,发现错误,然后停止服务器,修改代码,...

    Spring3单元测试和集成测试

    在Spring框架中,单元测试和集成测试是软件开发过程中不可或缺的部分。它们确保代码的质量和功能的正确性。本文将深入探讨Spring3中的单元测试和集成测试,并提供相关的实践指导。 ### 单元测试 单元测试是指针对...

    SSM整合实现分页以及单元测试代码

    下面将详细讲解SSM整合的实现过程,以及如何在这个基础上实现分页功能和进行单元测试。 首先,SSM整合的基础是搭建Spring、SpringMVC和MyBatis的环境。Spring作为整体的依赖注入容器,负责管理所有的Bean;...

    jira-servlet-plugin:POC,用于使用Servlet插件直接将浏览器集成到Jira(浏览器端)

    感兴趣的文件可以在/src/main/resources/serve-me.html找到提供HTML页面插件的Servlet代码为/src/main/java/com/cloudbees/devoptics/jira/DevOpticsJIRAServerPluginServlet.java Servlet单元测试为/src/test/java/...

    jmock-1.0.1-src.zip_单元测试

    都会需要对代码进行单元测试,对于关联依赖关系少或者比较简单的类来说,直接使用JUnit就可以轻松的完成测试工作,但是对于关联到其它比较复杂的类或对运行环境有要求的类的单元测试,比如ejb,servlet或Dao等,测试...

    springboot +tkmybatis + generator+单元测试.zip

    JUnit 是Java中最流行的单元测试框架,它允许开发者编写和执行针对代码单元的测试用例,确保代码的质量和功能正确性。在SpringBoot项目中,JUnit与Mockito等工具结合,可以有效地对服务层、DAO层进行单元测试。 6....

    27. Spring Boot Junit单元测试【从零开始学Spring Boot】

    在Spring Boot框架中,单元测试是一项至关重要的任务,它能够帮助开发者确保代码的质量,提前发现潜在问题,并且便于持续集成和重构。本篇内容将基于"27. Spring Boot Junit单元测试【从零开始学Spring Boot】"的...

    Struts2框架单元测试代码

    单元测试对于任何软件项目都至关重要,因为它能确保代码的正确性,提高代码质量和可维护性。在Struts2中,我们通常使用JUnit作为单元测试工具,结合Mockito等库来模拟依赖,进行隔离测试。 首先,了解Struts2的执行...

    spring单元测试

    在本文中,我们将深入探讨如何使用Spring框架进行单元测试,特别是在一个基于Java配置的Web项目中。我们将重点关注如何集成H2内存数据库以简化测试过程,以及如何针对Controller层和服务层进行有效的测试。 首先,...

    easymock测试servlet

    Easymock是一个流行的Java库,它提供了创建和管理模拟对象的能力,帮助测试人员编写单元测试。 在"easymock测试servlet"的场景中,我们看到`SampleServletTest`类正在使用Easymock来测试`SampleServlet`类的行为。...

    学生信息管理系统(jsp,Junit,servlet,filter,sql)

    JUnit是Java编程语言的一个单元测试框架,它在软件开发中起到保障代码质量的重要作用。在学生信息管理系统中,JUnit用于编写和运行针对各个功能模块的测试用例,确保每个功能都能正确无误地执行。例如,测试注册功能...

    SpringBoot2种单元测试方法解析

    SpringBoot2种单元测试方法解析 在本文中,我们将详细介绍两种常用的 SpringBoot 单元测试方法,并通过示例代码对其进行了详细的介绍。 普通测试类 在 SpringBoot 中,我们可以使用 JUnit 框架来编写单元测试。...

    单元测试junit

    ### 单元测试junit:理解与实践 在软件开发领域,单元测试是确保代码质量、功能正确性和可维护性的关键环节。JUnit作为Java领域最流行的单元测试框架之一,为开发者提供了一套全面且易用的工具,帮助他们编写高质量...

Global site tag (gtag.js) - Google Analytics