使用EasyMock对Servlet进行简单的测试
完整版见https://jadyer.github.io/2013/07/09/easymock-servlet/
文章共515字 · 阅读需要大约2分钟
一键AI生成摘要,助你高效阅读
问答
·
完整版见https://jadyer.github.io/2013/07/09/easymock-servlet/
这是一个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);
}
}
更多推荐
已为社区贡献7条内容
所有评论(0)