这是一个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. 我的MYSQL学习心得(十三)

    原文:我的MYSQL学习心得(十三) 我的MYSQL学习心得(十三) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYS ...

  2. PHP开发API接口及使用

    服务端 <?php require 'conn.php'; header('Content-Type:text/html;charset=utf-8'); $action = $_GET['ac ...

  3. Cacti+Nagios监控平台完美整合

    Cacti+Nagios监控平台完美整合 本博文出自51CTO博客吴光科博主,有任何问题请进入博主页面互动讨论!博文地址:http://wgkgood.blog.51cto.com/1192594/1 ...

  4. Android Studio之同一应用创建多个Activity(一)

    1. 2. 3. 4. 本文主要是构建多个Activity的过程.

  5. 怎样以学习单片机为契机,逐步成为优秀的project师

    现状 不知道阅读本文的读者,在初学单片机时是否和我以前一样迷茫.看到各种新的术语,疑惑不解:不知道从何学起:照着书中的样例一步一步做都没有问题,可是自己试着做东西,遇到各种问题却不会解决,向别人提问, ...

  6. jquery 拖动DIV

    <html><head> <style type="text/css"> .show{ background:#7cd2f8; width:30 ...

  7. jQuery中wrap、wrapAll和wrapInner用法以及区别

    原文: <ul>   <li title='苹果'>苹果</li>   <li title='橘子'>橘子</li>   <li ti ...

  8. .NET的微型Web框架 Nancy

    .NET的微型Web框架 Nancy .NET的微型Web框架 Nancy   大部分微软平台的开发人员如果选择开发框架只能是在ASP.NET WEBFORM和ASP.NET MVC两个之间选择. 而 ...

  9. 你是否应该使用一个Javascript MVC框架?

    你是否应该使用一个Javascript MVC框架?本文摘自smashingmagazine的Journey Through The JavaScript MVC Jungle部分内容,希望对大家有帮 ...

  10. android判断网络的类型

    转自:http://blog.csdn.net/xxxsz/article/details/8199031 判断网络类型是wifi,还是3G,还是2G网络 对不同的网络进行不同的处理,现将判断方法整理 ...