`

servlet 单元测试 mock easymock2 junit4

阅读更多

 

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



不知道测试重定向的页面是不是这么测,我想应该是的。

分享到:
评论

相关推荐

    powermock-easymock-junit-1.5.4.zip

    PowerMock与EasyMock是Java单元测试领域中的两个重要库,它们与JUnit结合使用,能够帮助开发者在测试过程中模拟复杂的对象行为和系统环境。这个压缩包"powermock-easymock-junit-1.5.4.zip"很可能包含了这三个库的...

    Junit 单元测试完整案例

    【Junit单元测试完整案例】深入解析 在软件开发中,单元测试是验证代码功能是否正确、独立单元是否按预期工作的关键步骤。Junit作为Java领域最常用的单元测试框架,为开发者提供了简单易用的API来进行测试。本案例...

    powermock-easymock-junit-1.6.1.zip

    在Java单元测试中,PowerMock和EasyMock是两个强大的库,它们扩展了JUnit的功能,使得开发者可以测试那些通常难以或无法直接测试的代码。PowerMock是基于EasyMock的一个扩展,它允许模拟静态方法、构造函数、final类...

    junit单元测试及Mock应用,超详细的PPT实战应用

    总结来说,本文档提供的内容涵盖了单元测试的基本概念、Mock技术的运用、JUnit框架的详细讲解,以及Mockito、MockMVC和Mock.js等工具的使用。通过这些知识,开发者可以构建更健壮的测试体系,提升代码质量和软件工程...

    EasyMock单元测试例子

    这个"EasyMock单元测试例子"提供了几个示例,帮助我们更好地理解和应用EasyMock。 EasyMock的基本概念: 1. **模拟对象(Mock Object)**:在单元测试中,我们可能不希望依赖实际的外部服务或数据库。模拟对象可以...

    Junit+EasyMock单元测试的jar包

    Junit和EasyMock是Java开发中广泛使用的两个工具,它们协同工作,帮助程序员高效地进行单元测试。 Junit是一个开源的Java测试框架,主要用于编写和运行面向对象软件的测试案例。它提供了断言方法来验证代码的行为,...

    单元测试利器JUnit4

    JUnit4作为Java平台上最流行的单元测试框架,极大地简化了测试代码的编写和执行。本篇将深入探讨JUnit4的相关知识点,帮助你更好地掌握这个强大的工具。 1. JUnit4简介: JUnit4是由Ernst Kuhr和Kent Beck开发的...

    easyMock resource

    EasyMock和JUnit是两个常用的单元测试工具,它们在Java开发领域中广泛使用。让我们深入探讨一下这两个工具以及如何将它们结合使用。 首先,`JUnit`是一个开源的测试框架,主要用于编写Java应用程序的单元测试。它...

    spring MVC junit 单元测试(controller)

    这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在的问题,提高软件的可靠性和可维护性。 首先,让我们了解Spring MVC的基本概念。Spring MVC...

    转:EasyMock 单元测试

    EasyMock 是一个流行的 Java 单元测试框架,它帮助开发者创建模拟对象来测试目标类的行为。这篇文档将深入探讨 EasyMock 的使用方法和原理,以便更好地理解和应用这一工具。 首先,让我们理解 EasyMock 的核心概念...

    junit4 jar包 Java单元测试框架绿色免费版.zip

    在进行单元测试时,有时我们需要模拟(Mock)依赖的对象,JUnit4虽然没有内置的模拟工具,但可以与其他模拟库(如Mockito)结合使用,提高测试的隔离性和准确性。 这个绿色免费版的JUnit4 jar包可能已经包含了所有...

    easymock selenium junit

    首先,Easymock可以模拟那些难以或不适合在单元测试中直接操作的依赖,确保测试的独立性。然后,使用JUnit编写测试用例,覆盖各个功能点。最后,通过Selenium将这些测试扩展到实际的浏览器环境中,验证用户界面的...

    java程序员白盒单元测试必备技能 -- Junit4

    Junit4作为Java领域中最常用的单元测试框架,是每个Java开发者必须掌握的技能之一。这篇压缩包文件中的"Junit4教程.doc"文档,很可能是提供了一步步学习和实践Junit4的详细指导。 首先,我们需要理解什么是单元测试...

    mock junit4

    本主题将深入探讨如何在JUnit4中结合Mockito进行单元测试。 一、JUnit4简介 JUnit4是JUnit系列的第四代产品,它引入了注解(annotations)来简化测试的编写。例如,`@Test`注解用于标记测试方法,`@Before`和`@...

    用Java编写的最流行的单元测试mock框架.zip

    本文件“用Java编写的最流行的单元测试mock框架.zip”主要包含了关于Mockito的相关资料,帮助开发者更好地理解和使用这个强大的工具。 Mockito是一个开源的Java库,专门设计用于创建模拟对象,以隔离被测试代码并...

    深入学习Java单元测试(Junit+Mock+代码覆盖率)

    深入学习Java单元测试(Junit+Mock+代码覆盖率) Java单元测试是软件测试的一种,旨在验证软件的正确性和可靠性。单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是...

    Jnuit单元测试PDF教程+Junit4.8 jar

    在进行单元测试时,有时我们需要模拟对象的行为,JUnit 4.8通过`@Mock`和`@Spy`注解配合Mockito库,使得创建和控制mock对象变得更加容易。这有助于隔离测试,避免了真实依赖对测试结果的影响。 除了核心的JUnit库,...

    Struts2SpringUnitDemo单元测试

    Struts2SpringUnitDemo是一个示例项目,展示了如何在Java应用程序中将Struts2和Spring框架进行集成,并进行单元测试。这两个框架都是Java Web开发中的关键组件,Struts2负责控制层逻辑,Spring则提供了全面的依赖...

    easymock测试servlet

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

    单元测试与 Mock 方法

    Mock方法则是单元测试中的一个重要工具,用于模拟复杂系统中的依赖关系,以便孤立地测试目标代码。在本篇文章中,我们将深入探讨单元测试与Mock方法的相关知识点。 首先,让我们理解单元测试的基本概念。单元测试是...

Global site tag (gtag.js) - Google Analytics