`
zjxs_sky100
  • 浏览: 29652 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

EasyMock辅助进行servlet测试

阅读更多
servelt的post处理方法:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();

String name = request.getParameter("username");
String password = request.getParameter("password");

System.out.println(name + "    " + password);
if ("aa".equals(name) && "123".equals(password)) {
System.out.println("111");
request.getSession().setAttribute("user", new UserInfor(name,password));
out.println("ok");

} else {
out.println("error");
}
}

运用junit + EasyMock对servlet进行测试:
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.junit.Test;


public class ServletDriver {


@Test
public void testJdbc() throws SQLException, IOException, ServletException {
// ResultSet mockResultSet = EasyMock.createMock(ResultSet.class);
// EasyMock.expect(mockResultSet.getString(1)).andReturn("one");
// EasyMock.replay(mockResultSet);

//应用control统一管理创建Mock对象
IMocksControl control = EasyMock.createControl();
HttpServletRequest request = control.createMock(HttpServletRequest.class);
HttpServletResponse response = control.createMock(HttpServletResponse.class);
HttpSession session = control.createMock(HttpSession.class);

//设定Mock对象的预期行为和输出
response.setContentType((String)EasyMock.anyObject());

//exceptLastCall获取上一次调用所对应的IExpectationSetters实例
EasyMock.expectLastCall().once();

EasyMock.expect(request.getParameter("username")).andReturn("aa");
EasyMock.expect(request.getParameter("password")).andReturn("123");
EasyMock.expect(response.getWriter()).andReturn(new PrintWriter(System.out,true));

//andStubReturn表示默认返回
EasyMock.expect(request.getSession()).andStubReturn(session);

/*************************************************************
* EasyMock使用参数匹配器
* EasyMock根据方法名和参数来匹配一个预期方法的调用,默认使用equals()进行
* 比较,在实际的使用过程中,比如参数是String类型的sql语句,sql语句的关键字
* 如果存在大小写的问题,那么EasyMock认为两个参数不匹配,造成Mock对象的
* 预期方法不被调用。
* 解决:使用灵活的参数匹配方式来解决这个问题。anyObject方法表示任意输入值
* 与预期值匹配。还有:aryEq,isNull,notNull,same等,具体请参考IBM技术网站
* 地址(http://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/#chap3)
************************************************************/
session.setAttribute((String)EasyMock.anyObject(),EasyMock.anyObject());
EasyMock.expectLastCall().once();
//=======================以上是Mock对象的记录============================

//=======================把Mock对象切换到回放状态=========================
control.replay();

LoginServlet loginServlet = new LoginServlet();
loginServlet.doPost(request, response);


//校验行为
control.verify();

}
}
0
1
分享到:
评论

相关推荐

    easymock测试servlet

    在"easymock测试servlet"的场景中,我们看到`SampleServletTest`类正在使用Easymock来测试`SampleServlet`类的行为。以下是一些关键知识点: 1. **Easymock库**:Easymock是一个开源库,它提供了模拟Java对象的方法...

    4-EasyMock-Servlet.rar

    在“4-EasyMock-Servlet.rar”这个压缩包中,我们很可能是得到了一个关于如何使用EasyMock进行Servlet测试的教程或者示例代码。让我们详细探讨一下EasyMock与Servlet结合使用的相关知识点。 1. **EasyMock基本概念*...

    模拟测试辅助工具easyMock.zip

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...

    servlet测试jar包

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

    Junit+EasyMock单元测试使用资料以及案例分析

    总结,Junit和EasyMock的结合使用能够有效地进行单元测试,确保代码的健壮性和可靠性。理解并熟练掌握这两个工具,对于提升软件开发的质量和效率至关重要。在实践中,不断通过案例分析和实践,你可以进一步提升单元...

    转:EasyMock 单元测试

    EasyMock 也支持对静态方法和 final 类进行模拟。通过使用 EasyMock 的扩展库,如 EasyMock Class Extension,可以创建代理类来模拟 static 方法和 final 类的行为。 **EasyMock 的高级特性** 除了基本的模拟和期望...

    easymock的使用,含demo

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。 ...

    EasyMock单元测试例子

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

    easymock-request.getParamsNames

    本文将详细讲解如何使用 Easymock 对 Servlet 进行单元测试,特别是针对 `HttpServletRequest` 中获取参数的方法 `getParamsNames()`。 在Servlet编程中,`HttpServletRequest` 是一个核心接口,它提供了处理HTTP...

    EasyMock

    EasyMock 是一个强大的Java模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以模拟复杂的交互场景。这个框架的出现,极大地简化了对那些难以或无法直接实例化的类的测试,比如接口或者静态方法。EasyMock...

    easymock-2.5.2工具 下载

    EasyMock 是一个强大的开源工具,专门用于生成模拟对象(Mock Objects),在软件开发特别是单元测试领域,它扮演着至关重要的角色。这个工具的版本为2.5.2,提供了对Java编程语言的支持,使得开发者能够方便地创建和...

    easyMock

    - **单元测试**:单元测试是对软件中的最小可测试单元进行检查和验证,如方法或函数。EasyMock帮助编写单元测试,通过模拟对象的行为来隔离测试目标。 - **模拟对象**:在测试中,不是使用真实对象,而是使用模拟...

    easymock.jar,easymockclassextension.jar

    使用Easymock进行单元测试时,你通常需要以下步骤: 1. **导入库**:在你的测试类中,你需要引入Easymock的相关库,包括`easymock.jar`和`easymockclassextension.jar`。 2. **创建模拟对象**:使用Easymock的`...

    easymock-3.2.jar

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。

    EasyMock介绍和使用

    EasyMock是一款强大的Java模拟框架,它允许开发者在进行单元测试时创建和控制对象的行为。这个工具使得测试更加独立,可以隔离被测试代码与其他依赖的系统,从而提高测试的效率和质量。EasyMock的核心理念是通过模拟...

    easymock 3.0

    Easymock 3.0 是一个流行的Java模拟框架,用于进行单元测试。它使得开发者能够在测试代码中创建和控制对象的行为,以便于隔离被测试代码并确保其正确性。在单元测试中,Easymock允许我们创建mock对象,这些对象模仿...

    easymock-3.2.zip

    例如,使用`@Before`注解设置测试前的准备工作,使用`@Test`注解定义测试方法,并在其中使用EasyMock的API进行模拟和验证。 总之,EasyMock 3.2 提供了一个强大而灵活的模拟工具,帮助开发者编写高质量的单元测试,...

    EasyMock 使用案例(含lib)

    EasyMock 是一个强大的开源Java模拟框架,用于进行单元测试。它允许开发者创建模拟对象来代替真实的依赖,以便在测试过程中可以完全控制它们的行为。在这个"EasyMock 使用案例(含lib)"中,我们将会深入探讨如何...

Global site tag (gtag.js) - Google Analytics