




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
队列是一种在程序开发中十分常用的数据结构,在此我就以编写一个实现队列功能的类-Queue为例进行说明。该类将实现以下基本运算:判断队列是否为空:empty()插入队列(即在队列未尾增加一个数据元素):inqueue(x)出队列(也就是将队列首数据元素删除):outqueue()取列头(也就是读者队列首数据元素的值):gethead()清空队列(也就是将队列的所有数据元素全删除): clear()查询x在队列中的位置:search(x)测试案例分析在测试驱动开发实践中,第一步就是考虑测试方案,通过分析该类的功能,我们可以得到以下测试案例:1) 队列为空测试TC01: 队列新建时,应为空;TC02: 清空队列后,应为空;TC03: 当出队列操作次数与插入队列操作次数一样时,应为空;2) 插入队列测试:TC04: 插入队列操作后,新数据元素将插入在队列的未尾;TC05: 插入队列操作后,队列将一定不为空;3) 出队列测试TC06: 出队列操作后,第一个数据元素将被从队列中删除;4) 取队头测试TC07: 取队头操作将获得队列中的第一个数据元素。5) 清空队列测试TC08: 清空队列操作后,队列将为空队列;注: 此处为了讲解的方便,并未将所有的测试用例都列出,同时也选择了一些十分简单的测试用例。第一次迭代我们首先编写第一个测试代码,这一测试代码只考虑了测试案例TC01, 也就是保证新建的队列为空:import junit.framework.*;/每个使用JUnit编写的测试代码都应该包括本行public class testQueue extends TestCase/创建一个测试用例,继承TestCaseprotected Queue q1;public static void main (String args)junit.textui.TestRunner.run (suite();/执行测试用例protected void setUp() /环境变量准备q1= new Queue();public static Test suite() /通用格式,指定测试内容return new TestSuite(testQueue.class);public void testEmpty() /以下每个方法就是一个测试assertTrue(q1.empty();/当队列新建时,应为空-TC01安装JUnit十分简单,只需在中下载最新的软件包(ZIP格式), 然后将其解压缩,并且将JUnit安装目录/junit.jar 以及JUnit安装目录都加到系统环境变量CLASSPATH中去即可。执行套件可以像上述程序一样在main方法中使用,也可以直接在命令行调用:java junit.textui.TestRunner 测试类名(文本格式)、java junit.awtui.TestRunner 测试类名(图形格式,AWT版)、java junit.swingui.TestRunner测试类名(图形版,Swing版)。编译执行(即在命令行执行javac testQueue.java和javatestQueue), 你会发现屏幕上出现提示:.E 一个小点说明执行了一个测试用例,E表示其失败Time: 0.11 说明执行测试共花费了0.11秒There was 1 error: 说明存在一个错误1) testEmpty(testQueue)java.lang.NoClassDefFoundError: Queueat testQueue.setUp(testQueue.java:13)at testQueue.main(testQueue.java:9)FAILURES!Tests run: 1, Failures: 0, Errors: 1测试没有通过是肯定的,因为Queue类都还没有写呢?怎么可能通过测试,因此,我们就编写以下代码,以使测试通过:public class Queue extends java.util.Vectorpublic Queue()super();public boolean empty()return super.isEmpty();将这个类编译后,再次执行测试程序,这时将出以下提示:. 一个小点说明执行了一个测试用例,没有E表示其成功Time: 0.11OK (1 test)你还可以使用前面我们说到的另两个命令,使测试反馈以图形化的形式体现出来,例如,执行java junit.awtui.TestRunner testQueue, 将出现: 图1第二次迭代接下来,我们修改测试程序,加入测试案例TC04、TC05的考虑。import junit.framework.*;public class testQueue extends TestCaseprotected Queue q1,q2;public static void main (String args)junit.textui.TestRunner.run (suite();protected void setUp() q1= new Queue();q2= new Queue();q2.inqueue(first); /对队列q2执行插入队列操作q2.inqueue(second);public static Test suite()return new TestSuite(testQueue.class);public void testEmpty()assertTrue(q1.empty();/当队列新建时,应为空-TC01public void testInqueue()assertTrue(!(q2.empty();/执行了插入队列操作,队列就应不为空-TC05assertEquals(1,q2.search(second);/search方法用于确定元素在队列中的位置/后插入的数据元素,应在未尾-TC04/插入两个,第一个在位置0, 第二在位置1根据这个测试代码,我们需要在Queue类中添加上inqueue() 和search() 两个方法,如下所示:public class Queue extends java.util.Vectorpublic Queue()super();public boolean empty()return super.isEmpty();public synchronized void inqueue (Object x)super.addElement(x);public int search(Object x)return super.indexOf(x);编译之后,再次执行java junit.awtui.TestRunnertestQueue, 你将再次看到成功的绿色。图2我们仔细看一下这一界面。1) 最上面列出了测试代码的类名,右边有一个Run 按钮,当你需要再次运行这一测试代码时,只需单击这个按钮。另外,将Reload classesevery run 选项打上勾很有用,当你测试未通过(出现红色时), 你可以转身去修改代码,修改完后,只需再按Run 按钮就可以再次运行。2) 中间区域是一个状态汇报区,红色表示未通过,统计了共运行了多少个测试(也就是在TestCase类中方法的数量)。3) 如果测试时出现错误,例如,我们不小心将assertTrue(!(q2.empty(); 误写成为asse
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生产制造业生产设备智能化升级改造方案
- 财务会计准则测试题及答案
- 行政管理与市政学发展趋势试题及答案更新
- 乡村畜牧产业发展扶持协议
- 五保户供养合同协议书
- 市场开发合作规划协议书
- 行政管理中的决策心理学应用探索试题及答案
- 自考行政管理本科制定计划试题及答案策略
- 自考行政管理团队合作试题及答案
- 2025年市政学重要考点分享试题及答案
- 2025团员考试试题及答案
- 2025年全国防灾减灾日专题培训课件
- 2025-2030中国氯氧化铋行业市场发展趋势与前景展望战略研究报告
- 2025年中考语文二轮复习:说明文阅读 测试卷(含答案解析)
- 视频监控介绍课件
- 统计学试题及答案解析
- 跨学科实践制作微型密度计人教版物理八年级下学期
- 2025届高考语文作文备考之审题立意30道选择题训练(附答案)
- 21. 三黑和土地 课件
- 挖掘机理论试题及答案
- 2025 中小学征订教辅谋利问题整治工作自查报告
评论
0/150
提交评论