使用EasyMock对Servlet进行简单的测试

来源:互联网 发布:cf瞬移源码 编辑:程序博客网 时间:2024/05/22 17:09

完整版见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;@Beforepublic void init(){servlet = new LoginServlet();request = EasyMock.createStrictMock(HttpServletRequest.class);session = EasyMock.createStrictMock(HttpSession.class);}/** * 测试登录失败的情况(session为空) */@Testpublic 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中无用户) */@Testpublic void testIsLoginFailSessionNoUser(){//声明HttpServletRequest获取到的是正常的HttpSessionEasyMock.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);}/** * 测试登录成功的情况 */@Testpublic void testIsLoginSuccess(){//声明HttpServletRequest获取到的是正常的HttpSessionEasyMock.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);}}
原创粉丝点击