这是一个WebProject,但不需配置web.xml,因为EasyMock用不上它

首先是用到的实体类User.java

package com.jadyer.model;

public class User {
private int id;
private String username;
private String password; /*-- 三个属性的setter和getter略 --*/ public User(){} public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
}

下面是待测试的LoginServlet.java

package com.jadyer.servlet;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import com.jadyer.model.User; public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 6655227641354075528L; public boolean isLogin(HttpServletRequest request){
HttpSession session = request.getSession();
if(null == session){
return false;
}
User user = (User)session.getAttribute("loginUser");
if(null == user){
return false;
}
return true;
}
}

最后是使用EasyMock编写的测试用例LoginServletTest.java

package com.jadyer.servlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test; import com.jadyer.model.User; /**
* EasyMock框架在使用时只需要一个easymock-3.1.jar
* 下载地址为http://sourceforge.net/projects/easymock/files/
* @create Jul 9, 2013 2:28:41 PM
* @author 玄玉 */
public class LoginServletTest {
private LoginServlet servlet;
private HttpServletRequest request;
private HttpSession session; @Before
public void init(){
servlet = new LoginServlet();
request = EasyMock.createStrictMock(HttpServletRequest.class);
session = EasyMock.createStrictMock(HttpSession.class);
} /**
* 测试登录失败的情况(session为空)
*/
@Test
public void testIsLoginFailSessionIsNull(){
//声明HttpServletRequest获取到的HttpSession是空的
EasyMock.expect(request.getSession()).andReturn(null);
EasyMock.replay(request, session);
//验证HttpSession为空时登录应该是失败的
Assert.assertFalse(servlet.isLogin(request));
EasyMock.verify(request, session);
} /**
* 测试登录失败的情况(session中无用户)
*/
@Test
public void testIsLoginFailSessionNoUser(){
//声明HttpServletRequest获取到的是正常的HttpSession
EasyMock.expect(request.getSession()).andReturn(session);
//声明HttpSession中无用户
EasyMock.expect(session.getAttribute("loginUser")).andReturn(null);
EasyMock.replay(request, session);
//验证HttpSession中无用户时登录应该是失败的
Assert.assertFalse(servlet.isLogin(request));
EasyMock.verify(request, session);
} /**
* 测试登录成功的情况
*/
@Test
public void testIsLoginSuccess(){
//声明HttpServletRequest获取到的是正常的HttpSession
EasyMock.expect(request.getSession()).andReturn(session);
//声明HttpSession中存在用户
EasyMock.expect(session.getAttribute("loginUser")).andReturn(new User());
EasyMock.replay(request, session);
//验证HttpSession有效且存在用户时登录应该是成功的
Assert.assertTrue(servlet.isLogin(request));
EasyMock.verify(request, session);
}
}

使用EasyMock对Servlet进行简单的测试的更多相关文章

  1. Struts2、SpringMVC、Servlet(Jsp)性能对比 测试

    Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照它. 做为一个程序员,对于各个框架的性能要 ...

  2. 【Head First Servlets and JSP】笔记6:什么是响应首部 & 快速搭建一个简单的测试环境

    搭建简单的测试环境 什么是响应首部 最简单的响应首部——Content-Type 设置响应首部 请求重定向与响应首部 在浏览器中查看Response Headers 1.先快速搭建一个简单的测试环境, ...

  3. Jmeter 快速入门教程(二)--创建简单web测试

    [版权所有: whoistester.com & jmeter.cf] http://wenku.baidu.com/linkurl=9zc4VHe6vUUeMdDZPpNsRehkazZFw ...

  4. IDEA与Tomcat创建并运行Java Web项目及servlet的简单实现

    创建Web项目 1. File -> New Project ,进入创建项目窗口 2.在 WEB-INF 目录下点击右键, New -> Directory ,创建  classes 和  ...

  5. 2.Jmeter 快速入门教程(二)--创建简单web测试 打印 E-mail

    今天我们就来实际用Jmeter创建一个测试场景,并进行性能测试. 注:由于本人使用中文版本,使用英文版本的请注意具体的菜单及参数名称. 1. 添加线程组(相当于lr里的scenario 设置) 打开j ...

  6. ASP.NET Core搭建多层网站架构【3-xUnit单元测试之简单方法测试】

    2020/01/28, ASP.NET Core 3.1, VS2019, xUnit 2.4.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[3-xUnit单元测试 ...

  7. Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看

    一.前言 搜索引擎还是在电商项目.百度.还有技术博客中广泛应用,使用最多的还是ElasticSearch,Solr在大数据量下检索性能不如ElasticSearch.今天和大家一起搭建一下,小编是看完 ...

  8. 学习总结------Servlet的简单理解

    1.什么是Servlet Servlet是一个Java编写的程序,在服务器端运行的(如tomcat) Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览 ...

  9. ELK简单安装测试

    1 介绍组件 Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读). Kafka是一种高吞 ...

随机推荐

  1. CSS知识总结之浏览器(持续更新)

    web页面浏览器渲染过程 1.解析html文件,并构建DOM树: 在DOM树中,每一个html标签都有一个对应的节点,并且每一个文本也有一个对应 的节点(js的textNode),DOM树的根节点就是 ...

  2. linux 线程回顾

    额,时隔两年重新写博客了. 这次看一下thread_cond_wait(pthread_cond_t * cond, pthread_mutex_t *mutex)和thread_cond_signa ...

  3. 快速构建Windows 8风格应用21-构建简单媒体播放器

    原文:快速构建Windows 8风格应用21-构建简单媒体播放器 本篇博文主要介绍如何构建一个简单的媒体播放器. <快速构建Windows 8风格应用20-MediaElement>博文中 ...

  4. Invent 2014回顾

    AWS re:Invent 2014回顾   亚马逊在2014年11月11-14日的拉斯维加斯举行了一年一度的re:Invent大会.在今年的大会上,亚马逊一股脑发布和更新了很多服务.现在就由我来带领 ...

  5. HashMap之Hash碰撞冲突解决方案及未来改进

    说明:参考网上的两篇文章做了简单的总结,以备后查(http://blogread.cn/it/article/7191?f=wb  ,http://it.deepinmind.com/%E6%80%A ...

  6. WinForm中回车键实现文本框之间的跳转

    利用窗体的KeyPreView .设置KeyPreView = true 设置窗体的KeyPreView 属性为True后,那么窗体内的子控件响应KeyPress事件(或其他事件)之前,会先响应窗体的 ...

  7. 【转】webAPP快速入门

    WebApp与Native App有何区别呢? Native App: 1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C. 2.更新体验较差.同时也比较麻烦.每一次发布 ...

  8. Git的使用学习资源

    开学第一天一般都挺认真的,认真做个功课. 跟据Ryan Tang的推荐,有两个比较好的学习Git的网站:http://git.gitcafe.com/book/zh 还有一个是CodeSchool的一 ...

  9. Node填坑教程——前言

    Node是什么? Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物 ...

  10. Asp.Net Web Api 与 Andriod 接口对接开发

    Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!   最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用A ...