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();
}
}
分享到:
相关推荐
easymock测试servlet使用代码
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...
使用junit和easymock对servlet进行测试。
个人作品 4-EasyMock-Servlet.rar
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。 ...
几个例子展示如何使用EasyMock进行单元测试
Junit+EasyMock单元测试使用资料以及案例分析,供学习单元测试的朋友学习使用!
easymock servlet 单元测试
easymock junit test 单元测试 java
EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。
NULL 博文链接:https://xuan0506.iteye.com/blog/1041296
EasyMock单元测试的扩展;...EasyMock来进行测试; EasyMock如何打桩; EasyMock实践指南; EasyMock使用技巧; EasyMock使用简明手册; EasyMock使用说明; EasyMock使用手记; 用Mock object进行隔离测试;
easyMock
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂...
EasyMock.jar 单元测试模拟对象 为实现!!
使用EasyMock做java单元测试的例子,包含所需要的jar包
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。
EasyMock是Java进行单元测试的一个工具,和JUnit搭配使用,该版本为3.2,该文件包括了doc文档,api文档,示例文档和所需jar包等。 该文件是从官网上下载的,请大家放心下载。
使用 EasyMock 进行单元测试的步骤包括: 生成模拟对象:根据指定的接口或类,EasyMock 能够动态地创建模拟对象。 设置预期行为:为模拟对象设置预期的行为,包括方法调用的次数、顺序以及返回值等。 切换到回放模式...
手动的构造 Mock 对象会给开发人员带来额外的编码量,而且这些为创建 Mock 对象而编写的代码很有可能引入错误。目前,有许多开源项目对动态...通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。