• 08.利用Easymock测试简单的servlet


    1.首先导入需要使用的servlet的jar包

    接下来我们编写一个登陆的servlet

    package com.fjnu.service;
    
    import java.net.HttpRetryException;
    
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import com.fjnu.model.User;
    
    public class LoginServlet  extends HttpServlet{
        
        public boolean login(HttpServletRequest rep){
            
            //首先获得登陆的session
            HttpSession session = rep.getSession();
            if(session == null){
                return false;
            }
            User user = (User) session.getAttribute("username");
            if(user == null){
                return false;
            }
            return true;
        }
    
    }

    我们来编写测试代码

    package com.fjnu.service;
    
    import static org.junit.Assert.*;
    import static org.easymock.EasyMock.*;  
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.junit.Before;
    import org.junit.Test;
    
    import com.fjnu.model.User;
    public class TestHttpLoginByEasyMock {
        private HttpServletRequest req;
        private HttpSession session;
        private LoginServlet servlet ;
        
        @Before
        public void setUp(){
            req = createStrictMock(HttpServletRequest.class);
            session = createStrictMock(HttpSession.class);
            servlet = new LoginServlet();
        }
        
        /*
         * 登陆操作有三个测试场景
         * 第一个是登陆session为null
         * 第二个是登陆获得用户名不存在
         * 第三个是登陆成功
         * */
    
        @Test
        public void testSeesionIsNull(){
            expect(req.getSession()).andReturn(null);
            replay(req,session);
            //执行登陆操作返回值是false
            assertFalse(servlet.login(req));
            verify(req,session);
        }
        
        @Test
        public void testUserIsNull(){
            expect(req.getSession()).andReturn(session);
            expect(session.getAttribute("username")).andReturn(null);
            replay(req,session);
            //执行登陆操作返回值是false
            assertFalse(servlet.login(req));
            verify(req,session);
        }
        
        @Test
        public void testUserExits(){
            expect(req.getSession()).andReturn(session);
            expect(session.getAttribute("username")).andReturn(new User());
            replay(req,session);
            //执行登陆操作返回值是false
            assertTrue(servlet.login(req));
            verify(req,session);
        }
    }

    视频下载地址

    链接:https://pan.baidu.com/s/1U1zlhz9bQVXTFQqZGgC8pA 密码:423k

  • 相关阅读:
    Tensorflow 2 flower_photos花卉数据集手动下载、离线安装、本地加载、快速读取
    [CC]ccHObject
    [CC]CC插件初探
    [g2o]一个备忘
    [PCL]keypoint
    [PCL]NDT点云匹配方法
    近邻搜索算法
    点云匹配和ICP算法概述
    [PCL]5 ICP算法进行点云匹配
    [PCL]4 PCL中图像匹配的几个类图
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/8915108.html
Copyright © 2020-2023  润新知