下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页(三)利用Eclipse进行单元测试(三)利用Eclipse进行单元测试
发表于:2023-04-02来源::点击数:标签:单元eclipseEclipse
首先像以前一样尝试使用jMock来模拟Collaborator对象——只是这一次,Collaborator没有默认的无参数构造函数。注,保留布尔false结果的测试期望。同时假定Collaborator对象要求使用字符串和原始的int作为传递给构造函数的参数。清单6显示了对
首先像以前一样尝试使用jMock来模拟Collaborator对象——只是这一次,Collaborator没有默认的无参数构造函数。注,保留布尔false结果的测试期望。
同时假定Collaborator对象要求使用字符串和原始的int作为传递给构造函数的参数。清单6显示了对Collaborator对象所做的更改。清单6.经过编辑的场景3的Collaborator类
publicclassCollaborator{
privateStringcollaboratorString;
privateintcollaboratorInt;
publicCollaborator(Stringstring,intnumber){
collaboratorString=string;
collaboratorInt=number;
}
publicStringexecuteJob(){
return"suclearcase/"target="_blank">ccess";
}
}
Collaborator类构造函数仍然十分简单。用传入参数设定类字段。这里不必使用任何其他逻辑,并且其executeJob()函数保持不变。
重新运行测试,并且示例的所有其他组件保持不变。结果是灾难性的测试失败,如下所示:
图5.场景3测试失败
以上测试是作为简单的JUnit测试运行的,没有代码覆盖。您可以用大多数代码覆盖工具(例如,Cobertura或EclEmma)来运行本文中列出的任何一个测试。但是,用Eclipse内的代码覆盖工具运行RMock测试时会带来一些问题(参见表1)。以下代码显示了实际堆栈跟踪的代码片段。
清单7.场景3中测试失败的堆栈跟踪
...Superclasshasnonullconstructorsbutnoargumentsweregiven
xy.Enhancer.emitConstructors(Enhancer.java:718)
atxy.Enhancer.generateClass(Enhancer.java:499)
atnet.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
atnet.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
atxy.Enhancer.createHelper(Enhancer.java:377)
atxy.Enhancer.create(Enhancer.java:285)
atxy.Enhancer.create(Enhancer.java:660)
失败原因是jMock无法通过没有无参数构造函数的类定义创建可行的模拟对象。实例化Collaborator对象的惟一方法是提供两个简单参数。您现在必须找到一种方法把参数提供给模拟对象实例化过程以达到同样的效果,这就是使用RMock的原因。
用RMock测试框架更正失败的测试
要更正测试,必须执行一些修改。这些更改可能显得十分重要,但是实际上,它们是一种相对简单的解决方法,利用两种框架的强大功能来实现目的。
必需的第一项更改是使测试类成为RMockTestCase,而不是成为jMockCGLIBTestCase。目的是在测试本身内启用属于RMock的那些模拟对象的较容易的配置并且——更重要的是——在最初设置期间启用这些配置。经验证明,如果测试类扩展的整个TestCase对象属于RMock,则通过两个框架构造和使用模拟对象将更容易。此外,乍看之下,快速确定模拟对象的流程将更容易一些(在这里,流程用于描述使用模拟对象作为参数甚或作为其他模拟对象的返回类型的情况)。
必需的第二项更改是(至少)构造一个保存传递给Collaborator类的构造函数的参数实际值的对象数组。为了清晰起见,还可以包括构造函数接受的类类型的类型数组并可以传递该数组,以及刚刚描述为参数的对象数组以实例化模拟Collaborator对象。
第三项更改涉及用正确语法构造对RMock模拟对象的一个或多个期望。而第四项也是最后一项必需的更改是使RMock模拟对象脱离记录状态转入就绪状态。
实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年海口客车从业资格证模拟考试答题题库
- 2024年西安客运驾驶员试题及答案
- 2024年甘肃客运考试应用能力试题
- 方言艺术大赛方案
- 数控机床结构与维护 第2版 课件 第三章 数控机床的主传动系统的结构与维护
- 建筑工程冬季施工措施
- 2024年精神文明建设实施方案
- 特种设备生产和使用单位考试题库压力容器使用单位题库
- 青年电视辩论赛方案
- “校园文明工程”建设实施方案策划方案
- 场(厂)内专用机动车辆作业人员考核大纲(试行)
- 音标教学经典教案
- 现场勘察确认函
- 校园环境卫生检查评分标准表.doc
- 高速公路跨线桥施工交通疏导方案
- 中国少年先锋队队歌(带拼音打印版)
- 中心偏差的计算方法
- API-685-中文_
- 三年级美术上册 第2课 我是生活小主人课件3 湘美版
- 人教版七年级数学课后习题与答案
- 国家基本药物优先使用措施及考评机制
评论
0/150
提交评论