`
flash7783
  • 浏览: 313423 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

用cactus,jetty实现对servlet类进行单元测试二

阅读更多

按照官网的定义,我们就可以用MILY: 'Arial','sans-serif'; FONT-SIZE: 10.5pt" lang=EN-US>cactusJUnit一起来完成对上述servlet的测试了。

首先,我们来建一个web项目,我定义的名称为cactustest把下载下来的cactus解压,把cactus-1.7.2\lib中的jar包复制到WebRoot\WEB-INF\lib下,也可以建立自己的用户库,方便以后的项目使用。搭建好环境后,接下来就可以写上面程序的测试类啦,让我们来用cactus为上面的程序写一个测试类,测试类代码为:

package com.test.servlet;

 

import org.apache.cactus.ServletTestCase;

import org.apache.cactus.WebRequest;

 

public class LoginServletCactusTest extends ServletTestCase {

    //先来个正确的测试用例

    //分别为usernamepassword赋值

    public void beginLoginUser(WebRequest webRequest) {

       webRequest.addParameter("username", "cuckoo");

       webRequest.addParameter("password", "123");

    }

   //使用assertTrue方法断言,如果正确返回true

    public void testLoginUser() {

       LoginServlet loginServlet = new LoginServlet();

       assertTrue(loginServlet.loginUser(request));

    }

   //再来个错误的测试用例

   //分别为usernamepassword赋值

    public void beginInLoginUser(WebRequest webRequest) {

       webRequest.addParameter("username", "guest");

       webRequest.addParameter("password", "123456");

    }

  //使用assertFalse方法断言,如果错误返回true

    public void testInLoginUser() {

       LoginServlet loginServlet = new LoginServlet();

       assertFalse(loginServlet.loginUser(request));

    }

}

这样,测试类就搞定了,

 

下图是我的项目结构如下图:

OK,现在就可以启动tomcat了,部署成功后在地址栏上输入http://localhost:8080/cactustest/ServletTestRunner?suite=com.test.servlet.LoginServletCactusTest  回车,你将会看到让自己感到高兴的结果,此种方式是以XML形式输出测试结果,如下图:

还可以用cactus自定义的的样式表的方式输出测试结果,只需要把cactus自带的cactus-report.xsl文件加入到webroot目录下就可以了,在地址栏上输入http://localhost:8080/cactustest/ServletTestRunner?suite=com.test.servlet.LoginServletCactusTest&xsl=cactus-report.xsl  回车,这种形式的输出比较美观,如下图所示:

到这里,一个单独用JUnit不能完成的测试用上cactus就搞定了,或许我们会感觉高兴下,从技术上我们是实现了用JUnitcactusservlet的测试,但细心的你是否已经发现了其中的不便之处,就是每次对一个servlet测试前都要启动tomcat,这样大大增加了测试时间,也可能影响项目进度。有没有什么方法可以解决这个问题呢?细心的你可能已经发现,在我的项目结构图上,已经有一个LoginServletJettyTest.java类。是的,这个就是为了解决上面问题而用的另一种框架,它就是Jetty。它运行测试servlet就像用JUnit测试普通java类一样那么简单,不需要启动tomcat

在这里我们可以使用Jetty 它的下载地址为 http://jetty.mortbay.org/jetty/index.html ,它是个Java写的HTTP服务器,本身也是个ContainerCactus集成了Jetty,并提供与测试相关的简便类别。

使用Cactus+Jetty执行测试,在更大的程度上隐藏了测试运行过程的细节,您不必关心Redirector Proxy,更不一定要关心TestCase在客户端与服务器端的行为,运行起来就如同在运作一个JUnit测试。

   WebRoot\WEB-INF\lib原来的基础上加入cactus.core.framework.uberjar.javaEE.14-1.8.1.jar就行了.

 

分享到:
评论

相关推荐

    cactus的学习笔记(一)

    3. 配置Servlet容器:根据所使用的Servlet容器(如Tomcat、Jetty等),配置Cactus插件或者设置相应的系统属性。 编写Cactus测试用例时,你需要继承自Cactus提供的基类,如`org.apache.cactus.ServletTestCase`。...

    jakarta-cactus-12-1.7.1.rar

    - 创建Cactus测试类,这些类继承自Cactus提供的基类,并使用JUnit注解。 - 在测试方法中,使用Cactus提供的API来模拟HTTP请求,与服务器交互。 - 测试执行后,Cactus会捕获结果并报告测试状态。 4. **Cactus的...

    cactus-源码.rar

    1. **Cactus Core**:这是Cactus的核心模块,实现了与Servlet容器的交互,包括测试类的生成和执行。主要类如`org.apache.cactus.Server`负责与服务器的通信,`org.apache.cactus.ServletTestRunner`处理Servlet的...

    家庭支出与收入数据数据集,根据人口统计和地理指标进行了分类,加拿大为例,适用于数据分析、机器学习

    这个数据集提供了2010年至2021年间加拿大各省的家庭支出与收入数据,这些数据根据人口统计和地理指标进行了分类。每行代表了年份(REF_DATE)、省份(GEO)以及编码后的支出或收入类型的唯一组合(COORDINATE)。以下是该数据集的关键特点及包含的列信息: 关键特点: 支出数据:家庭支出按照收入五分位数和支出类别进行分类。 收入数据:家庭收入值根据家庭类型、较年长成年人的年龄组别和收入水平细分。 地理位置匿名化:为了保护隐私,原始的地理位置标识符被替换为如“Province 1”这样的标签。 时间序列:涵盖了超过十年的财务数据(2010–2021),适合用于纵向经济和社会趋势分析。 包含的列: REF_DATE:记录年份(2010–2021) GEO:省份标签(例如,“Province 1”) Statistic:度量类型(例如,平均家庭支出) Before-tax household income quintile:税前家庭收入水平分组 Household expenditures, summary-level categories:支出类别 UOM:计量单位 COORD

    【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码和数据)

    1.【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码和数据) 2.数据集:NASA数据集,已经处理好,B0005电池训练、测试; 3.环境准备:Matlab2023b,可读性强; 4.模型描述:GRU门控循环单元在各种各样的问题上表现非常出色,现在被广泛使用。 5.领域描述:近年来,随着锂离子电池的能量密度、功率密度逐渐提升,其安全性能与剩余使用寿命预测变得愈发重要。本代码实现了GRU门控循环单元在该领域的应用。 6.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。

    【更新至2024年】2000-2024年各省专利侵权案件结案数数据

    2000-2024年各省专利侵权案件结案数数据 1、时间:2000-2024年 2、来源:国家知识产权J 3、指标:专利侵权案件结案数 4、范围:31省 5、用途:可用于衡量知识产权保护水平

    HMTL+JS+CSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式

    - 使用`<div>` 容器组织游戏界面,包含得分显示、游戏画布和操作按钮 - 支持三种游戏模式选择(一般模式、困难模式、无敌模式) - 移动端和桌面端兼容,提供触摸和键盘两种控制方式 2. CSS样式 : - 采用Flex布局实现页面居中显示 - 使用Grid布局实现方向按钮的排列 - 定义了游戏容器的阴影、圆角等视觉效果 - 为按钮添加了hover效果和过渡动画 3. JavaScript逻辑 : - 使用Canvas API实现游戏渲染 - 实现了蛇的移动、食物生成、碰撞检测等核心游戏逻辑 - 支持三种游戏模式,不同模式对应不同的游戏速度和规则 - 使用localStorage保存最高分记录 - 实现随机颜色生成,使游戏更具趣味性 代码整体结构清晰,功能完整,具有良好的可扩展性和可维护性。

    附件2-5:台区智能融合终端入网专业检测送检样品主要元器件清单.docx

    台区终端电科院送检文档

    基于强化学习的飞机升阻力特性预测模型实现及应用(含详细可运行代码及解释)

    内容概要:本文详细介绍了一个基于强化学习(RL)的飞机升阻力特性预测模型的实现过程。首先,定义了飞机空气动力学环境,包括状态空间、动作空间以及目标——预测升力系数(Cl)和阻力系数(Cd)。接着,通过生成模拟数据并进行预处理,创建了用于训练的数据集。然后,构建了一个神经网络代理模型,用于联合编码状态和动作,并预测升阻力系数。最后,实现了PPO算法来训练强化学习代理,使其能够根据当前状态选择最优动作,并通过不断迭代提高预测精度。文中还提供了完整的代码实现和详细的注释。 适合人群:航空航天领域的研究人员、机器学习工程师、对强化学习感兴趣的开发者。 使用场景及目标:适用于需要预测飞机升阻力特性的应用场景,如飞行器设计优化、性能评估等。目标是通过强化学习方法提升预测模型的准确性,从而为实际工程提供可靠的理论支持和技术手段。 其他说明:本文不仅涵盖了模型的设计与实现,还包括了数据生成、预处理等多个环节,有助于读者全面理解整个建模过程。同时,提供的代码可以作为研究和开发的基础,方便进一步扩展和改进。

    cmock ut aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    cmock ut aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    lsm6d datasheet

    lsm6d datasheet

    风力发电机传动机构的设计(增速器).rar

    风力发电机传动机构的设计(增速器)

    genesys-zu(5ev)配置petalinux(从安装到嵌入)

    genesys-zu(5ev)配置petalinux(从安装到嵌入)

    django自建博客app

    django自建博客app

    基于android平台的学生选课系统的设计与实现.zip

    Android项目原生java语言课程设计,包含LW+ppt

    幼儿园预防肺结核教育培训课件资料.pptx

    幼儿园预防肺结核教育培训课件资料

    STM32F103RCT6单片机控制气泵和电磁阀的开关,气泵和电磁阀的开和关均为开关量,使用mos管控制,mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管

    STM32F103RCT6单片机控制气泵和电磁阀的开关 1、气泵和电磁阀的开和关均为开关量,实现控制方法有多种,比如继电器,但是继电器动作有噪声且体积较大,更好的方法为使用mos管。 2、mos管的选型:mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管,根据要求,气泵和电磁阀供电电压为12V,所以选择的mos管耐压值要大于12V,这里选用耐压值为30V的MOS管,并且导通电流为5.8A。

    面板数据-全国各省金融监管强度数据集-含处理代码(2009-2023年).txt

    因文件较多,数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/146916073

    将 Windows 系统中 “C:\windows\fonts” 目录下的所有字体文件

    将 Windows 系统中 “C:\windows\fonts” 目录下的所有字体文件

    计量自动化终端技术规范 第2-5部分:智能量测终端功能模组接口协议(2023年6月).pdf

    智能量测终端最新标准

Global site tag (gtag.js) - Google Analytics