您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基本路径测试法和单元测试工具JUnit的使用
实验报告实验序号:02实验项目名称:基本路径测试法和单元测试工具JUnit的使用学号0907052103姓名曹锋专业、班09软件工程一班实验地点1#316指导教师崔建峰实验时间2012/3/5一、实验目的掌握基本路径测试方法;了解在Eclipse环境下JUnit单元测试工具的安装和使用方法;针对一个实际问题,在JUnit环境下设计并执行测试用例。二、实验要求开发环境:Eclipsev3.7及以上版本;JUnitv4.10及以上版本;文本编辑软件。硬件要求:CPUPIV以上,256M内存,1G硬盘空间。系统要求:Windows98/Me/XP/NT/2000,IE5以上。三、实验内容与步骤1.下载并安装JDK+Eclipse,学习Eclipse安装与使用方法。2.下载并安装JUnit,学习JUnit安装与使用方法。3.通读自动售货机程序,并将其在Eclipse环境下运行。问题描述,程序流程图和程序源代码见附录。4.按照如下格式,采用基本路径测试法编写测试用例(要有程序流程控制图,基本路径)。编号输入值Type输入值money状态预输出实际情况1Beer5C各资源剩余InputInformationType:Beer;Money:5Cents;Change:0CurrentStateBeer:5OrangeJuice:65Cents:7与预期相同1Dollar:62OrangeJuice5C各资源剩余InputInformationType:OrangeJuice;Money:5Cents;Change:0CurrentStateBeer:6OrangeJuice:55Cents:71Dollar:6与预期相同3Beer5C没有啤酒FilureInformationBeerShortage与预期相同4OrangeJuice5C没有橙汁FailureInformationOrangeJuiceShortage与预期不同5Cola5C各资源剩余FailureInformationTypeError与预期相同6Beer1D没啤酒FailureInformationBeerShortage与预期不同7Beer1D各资源剩余InputInformationType:Beer;Money:1Dollar;Change:5CentsCurrentStateBeer:5OrangeJuice:65Cents:51Dollar:7与预期不同8OrangeJuice1D各资源剩余InputInformationType:OrangeJuice;Money:1Dollar;Change:5CentsCurrentStateBeer:6OrangeJuice:55Cents:51Dollar:7与预期不同9OrangeJuice1D没有橙汁FailureInformationOrangeJuiceShortage与预期不同10Cola1D各资FailureInformation与预源剩余TypeError期相同11Beer1D没有5角FailureInformationChangeShortage与预期不同12OrangeJuice4C各资源剩余FailureInformationMoneyError与预期相同5.编写并执行基于JUnit的测试用例。6.提交测试用例程序和该程序运行结果最终画面。7.总结本次试验,并撰写实验报告。程序流程图如图一所示:(流程图可复制粘贴到画图查看大图。)图一实验截图:编写完测试用例,运行程序,源程序有六个错误,如图二所示:图二根据相应错误修改代码后测试通过,如图三所示:图三四、分析与讨论通过此次实验,我初步学会了测试工具Junit的使用方法,发现使用测试工具可以给程序测试带来很大的方便,使我们更容易找到程序的错误。五、教师评语签名:日期:成绩程序源代码:修改后的代码:packagefirst;publicclassSaleMachine{privateintcountOfBeer,countOfOrangeJuice,countOfFiveCents,countOfOneDollar;privateString[]typeOfGoods={Beer,OrangeJuice};privateStringresultOfDeal;publicSaleMachine(){initial();}publicvoidinitial(){countOfBeer=6;countOfOrangeJuice=6;countOfFiveCents=6;countOfOneDollar=6;}publicSaleMachine(intfiveCents,intoneDollar,intnumOfBeer,intnumOfOrange)//便于测试的初始化函数{countOfFiveCents=fiveCents;countOfOneDollar=oneDollar;countOfBeer=numOfBeer;countOfOrangeJuice=numOfOrange;}publicStringcurrentState(){Stringstate=CurrentState\n+Beer:+countOfBeer+\n+OrangeJuice:+countOfOrangeJuice+\n+5Cents:+countOfFiveCents+\n+1Dollar:+countOfOneDollar;returnstate;}publicStringoperation(Stringtype,Stringmoney)//type是用户选择的产品,money是用户投币种类{if(money.equalsIgnoreCase(5C))//如果用户投入5角钱{if(type.equals(typeOfGoods[0]))//如果用户选择啤酒{if(countOfBeer0)//如果还有啤酒{countOfBeer--;countOfFiveCents++;resultOfDeal=InputInformation\n+Type:Beer;Money:5Cents;Change:0\n\n+currentState();returnresultOfDeal;}else{resultOfDeal=FailureInformation\n+BeerShortage;returnresultOfDeal;}}elseif(type.equals(typeOfGoods[1]))//用户选择橙汁{if(countOfOrangeJuice0){countOfOrangeJuice--;countOfFiveCents++;resultOfDeal=InputInformation\n+Type:OrangeJuice;Money:5Cents;Change:0\n\n+currentState();returnresultOfDeal;}else{resultOfDeal=FailureInformation\n+OrangeJuiceShortage;returnresultOfDeal;}}else{resultOfDeal=FailureInformation\n+TypeError;returnresultOfDeal;}}elseif(money.equalsIgnoreCase(1D))//如果用户投入一元钱{//if(countOfFiveCents0)//如果用户投入一元钱//{if(countOfFiveCents0)//如果用户有零钱{if(type.equals(typeOfGoods[0])&&countOfBeer0)//如果用户选择啤酒而且还有啤酒{countOfBeer--;countOfFiveCents--;countOfOneDollar++;resultOfDeal=InputInformation\n+Type:Beer;Money:1Dollar;Change:5Cents\n\n+currentState();returnresultOfDeal;}elseif(type.equals(typeOfGoods[1])&&countOfOrangeJuice0)//如果用户选择橙汁而且还有橙汁{countOfOrangeJuice--;countOfFiveCents--;countOfOneDollar++;resultOfDeal=InputInformation\n+Type:OrangeJuice;Money:1Dollar;Change:5Cents\n\n+currentState();returnresultOfDeal;}else{if(type.equals(typeOfGoods[0])&&countOfBeer=0){resultOfDeal=FailureInformation\n+BeerShortage;returnresultOfDeal;}elseif(type.equals(typeOfGoods[1])&&countOfOrangeJuice=0){resultOfDeal=FailureInformation\n+OrangeJuiceShortage;returnresultOfDeal;}else{resultOfDeal=FailureInformation\n+TypeError;returnresultOfDeal;}}}else{resultOfDeal=FailureInformation\n+ChangeShortage;returnresultOfDeal;}}//else//{//resultOfDeal=FailureInformation\n+MoneyError;//returnresultOfDeal;//}//}resultOfDeal=FailureInformation\n+MoneyError;returnresultOfDeal;}}测试用例代码:packagefirst;importjunit.framework.TestCase;publicclassTestSaleMachineextendsTestCase{publicvoidtestOperation1()//售货机各资源均有剩余,用户投币5角,选择啤酒{SaleMachinesaleMachine1=newSaleMachine();StringexpectedResult=InputInformation\n+Type:Beer;Money:5Cents;Change:0\n\n+CurrentState\n+Beer:5\n+OrangeJuice:6\n+5Cents:7\n+1Dollar:6;assertEquals(expectedResult,saleMachine1.operation(Beer,5C));}publicvoidtestOperation2()//售货机没有啤酒剩余,用户投币5角,选择啤酒{SaleMachinesaleMachine2=newSaleMachine(6,6,0,6);StringexpectedResult=FailureInformation\n+BeerShortage;assertEquals(expectedResult,saleMachine2.operation(Beer,5C));}publicvoidtestOperation3()//售货机各资源均有剩余,用户投币5角,选择橙汁{SaleMachinesaleMachine3=newSaleMachine();StringexpectedResult=InputInformation\n+Type:OrangeJuice;Money:5Cents;Change:0\n\n+CurrentState\n+Beer:6\n+Orang
本文标题:基本路径测试法和单元测试工具JUnit的使用
链接地址:https://www.777doc.com/doc-4964575 .html