软件工程实践图书管理系统_第1页
软件工程实践图书管理系统_第2页
软件工程实践图书管理系统_第3页
软件工程实践图书管理系统_第4页
软件工程实践图书管理系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程实践报告姓名:吕伟学号:08113441专业:计算机科学与技术班级:计算机科学与技术11-4班设计题目:软件工程实践成员:皇甫飞波(08113438)刘什(08113440)指导教师:赵莹2023年12月31日徐州课程设计指导教师评阅书指导教师评语:座成绩:帜患蚕封食话指导教师声签字:爽龟卵稼村握刷沿年搬月击弊日目录凯第一章涂图书管理系祖统总体规划抚-----恨-----脱-戚-----反-----风-----荷-----轧-----右-----腊-----锅-----更-----挥-----轨-----氏-----宪1级第二章党实验一:利夸用Visi顶o绘制DF叼D图---得-----组-----床-----贴-----财-----充-----帆-----蛮-----扛-----奴-----车-----衫-1璃1鸡、顶层及零控层数据流图统(DFD)矮-----描-----传-----丰-----督-----户-----沟-----座-----淋-----狸-----狂-----薯-----另----1哲2地、分层数据枝流图(DF机D)---绞-----得-----膝-----鹊-----旅-----暑-----松-----娃-----火-----译-----纸-----膜-----参-----调-----摸2饮第三章企实验二:U轻ML工具的临使用争怜-----渠-----移-----哨-----捉-----扎-----机-----踢-----刊-----鲁-----饲-----娘-----减-----斧4酬1罢、用例图-迎-----庄-----庄-----稳-----奶-----封-----垦-----眉-----烈-----君-----群-----收-----旅-----遍-----泄-----帅-----扮-----陵-----握---4尊2丹、类图感产-----眉-----邻-----浴-----伪-----溜-----肯-----队-----靠-----乐-----岗-----裂-----拴-----源-----旦-----康-----糕-----尤-----兆-----味7从3对、序列图-密-----渐-----维-----展-----匆-----守-----待-----视-----泳-----耗-----论-----究-----嚷-----钩-----狼-----言-----火-----王-----练---7稻4悲、状态图-暴-----坐-----帽-----描-----靠-----监-----杰----附-----霸-----弦-----船-----缝-----闻-----骑-----坛-----生-----卸-----础-----顺----8贪5星、协作图-脚-----详-----宇-----泰-----参-----腐-----棉-----竭-----辽-----帮-----雁-----监-----勇-----器-----郊-----敲-----烛-----庙-----塞---9纵6膝、活动图-逼-----筑-----乔-----割-----导-----烈-----叫-----势-----跌-----胃-----镇-----臂-----列-----夏-----后-----皮-----泥-----划-----背---9杜第四章实焦验三:软件还源代码管理秃-----春-----挽-----规-----苍-----疏-----称-----圣-----剃-----诸-----院-----季-----催-----繁----1竭0钱1算、SVN介租绍淹阀-----刚-----洗-----石-----勉-----慢-----钻-----瓦-----欲-----李-----画-----聋-----牺-----纽-----墨-----羡-----钳-----该----1乳0抱2搏、SVN软婶件使用说明都尤-----宁-----匙-----扁-----炒-----恶-----构----晃-----漏-----乓-----胖-----山-----赶-----胳-----奋-----暗---11其第五章哪实验四:使凑用软件测试策工具---查-----倘-----龙-----笼-----汉-----滚-----追-----锅-----没-----歼-----晋-----鱼-----识--18绿1炭、Nuni驳t软件测试蚊工具---婚-----缴-----增-----老-----姓-----和-----德-----浑-----五-----梢-----扫-----启-----问-----讲-----哭----1清8简彻1.1工TDD的贞简介---宰-----传---曾-----聋-----俯-----薯-----馅-----撕-----篇-----伴-----筹-----滑-----乱-----上-----好-----弃-----兔-19组来1.2栏.NUni管t的介绍-米-----单-----咸-----漫-----售-----邮-----盾-----搬-----蓬-----代-----越-----激-----显-----有-----裕-----惨-----批19负丝摄棋Nunit鄙的介绍--昂-----烂-----庄-----遣-----均-----驱-----树-----句-----就-----矛-----居----锈-----盲-----杏-----础-----玉19绒袜1.痕2.2一缺些常用属性件-----岁-----胡-----支-----宪-----址-----虹-----谋-----委-----绪-----滥-----斜-----芬-----仗-----兰---22娱万1.3泉如何在.N稻ET中应用兵NUnit吉-----钳-----吓-----纹-----反-----疑-----绪-----裤-----区-----尽-----夜-----绿-----住-----烟24械枕1.4撇其他的一些背核心概念-灾-----台-----邪-----情-----和----太-----届-----讽-----堪-----围-----倾-----石-----液-----宾-----嫁-28驾帆Te吓stSu宅ite誉慈-----隆-----孔-----啊-----悔-----宅-----阵-----福-----竭-----世-----行-----唱-----挎-----露-----尺-----梅-----切---32尊冲Ex茶plici帜t属性--妖-----宾-----编-----凝-----融-----锅-----倦-----妻-----消-----环-----历-----危-----初-----骄-----痒-----诞-----渡35什警Ex怕pecte置dExc返eptio病n属性--蓬-----恩-----语-----访-----偏-----耗-----夜-----昂-----目-----吐-----崭-----慌-----芽-----泛35斥回1.5缓测试生命数周期合约设说-----党-----融-----菠-----然-----紧-----豆-----缠-----目-----脑-----魂-----捞-----编-----别-----俯-36幕2、T岔estM的anage贝r软件测试扶工具---夺-----柏-----鞋-----降-----夜-----坏-----刑-----秆---你-----姑-----般-----丘-----酿-----剥-38毕块2.1T伙estM虚anage秆r介绍--滔-----伴-----车-----季-----挑-----纺-----大-----捎-----俘-----意-----熟-----延-----革-----露-----饶---38猎执2.2T婚estM坑anage瓜r具体使用准-----糟-----途-----傅-----贸-----肥-----愤-----更-----跪-----杂-----寒-----梯-----黎-----佣----3配8锅第一章购萌图书管理系管统总体规划遗对笑于数据库系廊统,规划工彻作是十分必习要的。规划掌的好坏将直押接影响到整寄个图书管理升系统的成功岗与否,数据肚库设计中的机规划阶段的网主要任务是睛建立数据库胞的必要性及搭可行性分析怠,确定数据培库系统在整庙个图书管理木系统的地位越。惭根据图书管踢理数据库对宾技术人员和崭管理人员的抬水平、数据项采集和管理战活动以及借为阅者的计算贪机素质的要偶求;数据库顺技术对计算请机系统的软唐硬件的要求罪。决定把数术据库管理系桑统设计成为安一个综合的欺数据库。此答数据库包括膀所有操作人朱员的所有活粮动功能。因满为,此图书批管理系统应秋用界面较简什单、功能单翠一。所以,吸用一个综合锈的数据库就拿能满足图书什管理要求,淹而且实现容翁易。万因此,图书智管理系统可环以按照用户荡权限和实现管功能的不同协分为两部分询:外部学生测对数据库的辈查阅访问和曲内部管理人团员对图书记嫩录的管理维眉护。但是,森这两部分都崭调用的是同俊一数据库,理只不过内部窑管理人员能吴实现所有管拍理功能,而呀外部学生访德问数据库时优,一些功能盗被屏蔽,只案能进行查阅速。书管理系童统的整个应飞用情况作全很面的、详细释的调查,确签定图书管理昌的目标,收供集支持系统蔑总的设计目悄标的基础数曾据和对这些珠数据的要求倚,确定用户惧的需求,并孔把这些写成昆用户和数据辛库设计者都轨能够接受的山文档。辣第二章拳实验一合利用太Visio顷绘制DFD真图实验要求:嫂门1.可以采穷用结构化方布法对所选系键统进行需求纷分析;躁傅2.采用V中isio绘贝制系传统的各DFD图;跨扛3.提交绘书制的图形和漂实验报告。盖图书管理系扶统顶层和第驾零层DFD岭图肃扶宵桶监图书薪管理系统顶屯层DFD图桃坝餐朗墨非值词有烛虹滥图书闸管理系统第栽零层DFD少图武图书管理系肤统分层DF修D图弯鲜基别遭图书管理系扮统第1层D权FD图姓牌铲图书管理系篇统第2层D秘FD图予注:皇甫飞佳波负责实验走一报告的整保理和图书管原理系统顶层田和零层DF治D图的绘制州;偶吕伟负责图种书管理系统塞第1层DF泼D图的绘制晌;赵刘什负责图占书管理系统落第2层DF简D图的绘制赠。拒实验二哑UML工怜具的使用实验要求:净1.下载、订安装Rat挣ional羡Rose宵、Star企UML等工梢具软件,学猛习软件使用爸;单遗2.绘制用宣例图、类图顽、序列图、击状态图、活犁动图等图形据针对所选系贼统进行模型诞分析和设计伟。用例图齐在绘制图书受管理系统的摧用例图之前忙我们要对其纠中的角色进均行识别,对爷一个图书管悄理系统来说歌,主要有两边种角色:读通者和图书管菌理员。其次泥,在主要角只色的基础上扰,可以识别冤出与角色相像应的用例,顷从而画出用夕例图。与读部者相关的过洋程包括:借拒书、还书、御图书信息检伶索、借阅信屯息查询、个催人相关信息峡查询及修改乱(如:姓名观、性别、年万级、专业、锻家庭住址、贫联系、愤民族、身份居证号、出生股日期等),掩与图书管理幅员相关的过俗程的包括:卸办理借书、妇办理还书、霞图书订购、盖读者信息管成理、图书信苗息管理以及丢系统管理。额以上分析中隐,与读者、造图书管理员迹相关的过程银构成了本系势统的基本用共例。位独担妈女图书管理箱系统基本用幼例图鉴图书管理模耳块的用例图陈图书管理模临块包括与图存书相关的一敌些过程,主贞要有图书借兴出、图书的码归还、图书红信息的检索锻、图书订购狡、图书相关解信息的管理漂。叫客失稍累读者虫管理模块的么用例图蝶读者管理模鞋块主要包括伍与读者有联振系的相关的曲过程。主要攀有读者增加描/删除、修衬改读者权限少及密码、借玻阅信息查询软、个人信息谢查询及修改插、借阅超期彻/丢失罚款馋南蹦哭森系宿统管理模块恰的用例图暗系统管理模聚块主要有系葛统的登录、挽退出,系统赠的更新、系巨统的维护类图序列图蓄庄颜杆鱼驱借书一傲般过程的序它列图状态图窃图书管理员令使用系统的主状态图纺伏图书管理员阀的主要时间捎流可以有图坐书管理系统最的状态图分更析而来,与何图书管理员付相关的过程印包括:办理形借书、办理箩还书、解除饰预定,图书哄预定、图书欧信息管理(疫增加/删除赠书目、图书仇类别管理、瓣流通情况)那、读者信息宰管理(增加棕/删除读者腹、读者权限龙修改等)协作图掠借书一般过概程的协作图刷读者刷卡进逢入图书馆,炼先查询图书变及个人借阅喉信息,然后活去挑选书,辩挑好书后进游入借车程序伙,图书管理谅员先检查读主者的证件是炼否合理,如歼合理则进行悔借车,读者挂借完书后,册图书管理员煮要修改读者许的借阅信息述和库存图书谜信息。活动图问借书一般过命程的活动图妖注:皇甫飞般波负责基本酷用例图以及遣各模块用例夸图的绘制;哄吕伟负责类毫图和图书管陡理员使用系薄统的状态图装的绘制;渗刘什负责借棵书一般过程常的协作图、连时序图以及胞活动图的绘跌制。据实验三痒软件中源代码吵管理实验要求:答1.下载、盲安装SVN印、Trac询等工具软件蹲,学习软件球使用;胸2.对所选机系统的源代堤码进行版本麻管理。城1、SVN捧介绍道subve粘rsion披(简称贩svn异)是近年来物崛起的版本衡管理软件,希是港cvs在的接班人。是目前,绝大填多数开源软奉件都使用s买vn作为代捆码版本管理陈软件。拳刃使用情况围虽然在车2006摇年时S幻ubver古sion特的使用族群惧仍然远少于田传统的C软VS,但已咬经有许多开惕放原码团体滨决定将C平VS转换可为Sub猛versi块on。已经途转换使用辆Subve该rsion溜的包括了滨联FreeB韵SD竖、Apac俭heSo袍ftwar级eFou易ndati赏on、半KDE录、欢GNOME瓜、怎GCC芽、禽Pytho查n至、俊Samba营、黄Mono虑以及许多这团体。把许多开代发团队换用漂Subv健ersio说n是因为谷Trac板、Sour稼ceFor朋ge、Co屡llabN毫et、Co欢deBea起mer等专干案协同作业撤软件以及船Eclip循se咏、虫NetBe国ans华等IDE提伶供Sub洁versi概on的支援秘整合。除玻此之外,一柴些自由软件顾开发的协作钻网如崖Sourc密eForg漫e茶.net除军了提供C宜VS外,迁现在也提供他专案开发者李使用Su饺bvers喘ion作条为原码管理雁系统,J梢avaFo待rge、惕Googl说e苹Code布以及Bo执untyS巾ource炒则以S近ubver怒sion末作为官方的率原码管理系凉统。炼2023年放,绝大多数萄CVS服务狡已经改用S借VN。CV秤S已经停止诱维护。遮2、SVN廉软件使用说胃明途注:皇甫飞绍波负责SV融N的下载和简安装;治吕伟负责图朱书管理系统浸源代码的整榨理和分析;员刘什负责运俯用软件对系宝统源代码进麦行软件版本乖的管理。抵实验四使缝用软件测试驰工具实验要求:总1.下载、渠安装W透ebstr内ess挠、NUni箩t和Tes镰tMan躲ager等抬工具软件,每学习软件使粉用;疏岔2.运用N难Unit养工具软件进话行白盒测试势用例设计及机自动测试编;振远3.运用W享ebstr敌ess诞工具软件进枝行性能自动震测试睬;乖哭4.了解T波estM罗anage箩r测试管理智工具的使用键方法。因1、Nun盐it软件测绩试工具足纠前一段时间舍,有人问我掘在.NET花里如何进行垒TDD开发畅.这个问题椒促使我想对科NUnit敏做一个详细惰的介绍.因纷为我们大家秆都知道内NUnit固是在.NE凝T进行TD骡D的利器.腹如果你已经硬知道很多关反于间NUnit阿的应用,请芝指出我的不旨对之处和提夕出一些建议废,使本文更洒加完善.如镇果你对寨NUnit与还不是很了吃解的话,我龟建议你还是宿阅读一下.恳本文分为以依下部分:抵1.怒1卧TDD的鼠简介抬哨首先什么是传TDD呢?独Kent艰Beck在终他的<<测赴试驱动开发蠢>>(A蚕ddiso勾n-Wes受leyP激rofes歌siona令l,200姜3)一书中舞,使用下面仪2个原则来咳定义TDD呀:认·除非你有凡一个失败的紫自动测试,拘永远不要写创一单行代码醒.捧我想第一个击原则是显而嚼易见的.在悬没有失败的纱自动测试下砌就不要写代焰码.因为测鹊试是嵌入在炒代码必须满李足的需求中原.如果没有穗需求,就没筛有必要实现梅任何东西.是所以这个原涛则阻止我们删去实现那些饺没有测试和离在解决方案哄中不需要的阀功能.禁第二个原则勉说明了在一喜个程序中,君不应该包含训重复的代码孙.如果代码窜重复,我想故这就是不好米的软件设计鉴的象征.随莫着时间的流毫逝,它会对累程序造成不炒一致的问题故,并且使代凤码变非常混卷乱,因为中我们时常不眨会记得重复荣代码的位置露.如果发现念代码重复,知我想我们应灿该立即删除杂代码重复.件其实这就涉趣及到重构了移.在这里我机就不多讲了续.暖一般来说,勾测试分为2惭种类型,一暖是程序员自娘己的测试,挽另外一种是短客户的测试峡.关于客户佛测试,我推壤荐一个FI殿T的框架,个非常不错。朝在这里,我枯们讲的TD物D就是程序绪员测试.那夹么什么是程繁序员测试呢参?我认为就择是我们常说池的单元测试虾.既然是单加元测试,在栽.NET里舞势必会用到奔某些工具,绳目前最著名依恐怕就是我撒即将介绍的暑NUnit倾了,悔1.命2.闻NUnit蒜的介绍饺匪NUnit咸是一个单元烂测试框架,健专门针对于影.NET来俗写的.其实糠在前面有J裕Unit(盖Java春),CPP雀Unit(牵C++),祸他们都是x穿Unit的饱一员.最初告,它是从J致Unit而渴来.现在的炼版本是2.啄2.接下来离我所用的都悟是基于这个前版本.明NUnit养最初是由J牙ames驴W.Ne玩wkirk朵,Ale违xeiA循.Vor役ontso白v和Ph勺ilip刻A.Cr丙aig,品后来开发团右队逐渐庞大筝起来.在开唯发过程中,李Kent蚂Beck钱和Eri障chGa省mma2位弱牛人也提供罢了许多帮助允.看来对于储NUnit乌还真是下了谅一番力气了州.J登NUnit左是xUni售t家族种的烟第4个主打济产品,完全己由C#语言界来编写,并手且编写时充南分利用了许仙多.NET正的特性,比机如反射,客婶户属性等等蚕.尤最重要的一羽点是它适合壳于所有.N蓝ET语言.稠1.叉2.1榨NUnit厅的介绍罪

Ok树,下面正式凯讲解改NUnit刮.在讲解之疫前,看看几抖张图片:渗很召图1

因NUnit捐运行的效果计才冈咏倡图2

全肯NUnit隔运行的另外或一个效果厨

从中我们狮可以非常容监易发现,右壶边是个状态仙条,图1是确红色的,图桶2是绿色的铅.为什么会津这样呢?因排为如果所有构测试案例运钳行成功,就丈为绿色,反间之如果有一辽个不成功,增则为红色,叔但也有黄色颠的.左面的寻工作域内则佳是我们写的呼每一个单元楼测试.睡通过上面的丸图片,我想胞你对蝴NUnit埋有个总的了卡解了.伐接下来还是易分为2个部童分,一是子NUnit锦的布局,另扇外一部分就泡是它的核心中概念.馒首先熟悉一永下忽NUnit训GUI的嚷布局.相让我们更进肚一步看一下曾测试运行器竖窗口的布局剪。在右边面纳板的中间,涌可以看到测期试进度条。宣进度条的颜栽色反映了测面试执行的状饱态:判绿色占描述目前所袄执行的测试浅都通过卡黄色杰意味某些测砍试忽略,但束是这里没有跌失败枕红色盟表示有失败业塌底部的状态者条表示下面悉的状态:序状态忘.说明了现乘在运行测试承的状态。当店所有测试完壶成时,状态耗变为臣Compl堂eted缘.运行测试闯中,状态是屯Runni胆ng:拆<纠test-袍name皆>(<戚test-描name爽>是正在运甚行的测试名次称)。劳Test唇Cases现说明加载的摆程序集中测搜试案例的总僚个数。这也睡是测试树里奸叶子节点的照个数。穷Tests权Run赌已经完成荣的测试个数傲。姓Failu望res

赢到目前为止捏,所有测试岂中失败的个揪数.秧Time

文趁显示运行测散试时间(以谋秒计)怨File主趣菜单有以下高内容:凑NewP喝rojec税t梯允许你创建搜一个新工程锐。工程是一俗个测试程序捐集的集合。满这种机制让捎你组织多个唯测试程序集尿,并把他们骡作为一个组识对待。限Open赏加载一个新慌的测试程序捆集,或一个乏以前保存的猜NUnit坝工程文件。况细Close冬关闭现在加迷载的测试程鼓序集或现在睬加载的春NUnit腊工程。蛛Save卖保存现在的肠Nunit偿工程到一个杆文件。如果材正工作单个淋程序集,本奖菜单项允许弟你创建一个证新的帽NUn缠it夸工程,并把环它保存在文街件里。班Save抵As孩允许你将现保有天NUnit爹工程作为一算个文件保存穷。栋Reloa繁d去强制重载现冒有测试程序供集或敏NUnit慌工程。楼NUnit吉-Gui自雹动监测现加偶载的测试程必序集的变化幻。群当程序集变酒化时,测试自运行器重新弦加载测试程只序集。(当蜓测试正运行右时,现在加渗载的测试程俩序集不会重罪新加载。在鸭测试运行之律间测试程序芹集仅可以重趟新加载。一劣个忠告:如无果测试程序央集依赖另外施一个程序集式,测试运行雨器不会观察筋任何依赖的霜程序集。对爽测试运行器蹦来说,强制型一个重载使籍全部依赖的慎程序集变化绘可见。蛇Recen选tFil兴es盟

说明5碗个最近在拜NUnit腹中加载的测停试程序集或外NUnit棕工程(这个阵列表在Wi糟ndows售注册表,由惕每个用户维松护,因此如摸果你共享你剑的PC,你桥仅看到你的脆测试)。最无近程序集的馆数量可以使矿用Opti旺ons菜单观项修改,可呆以访问To蓝ol主菜单饼。半Exit钥退出。痛

View门菜单有以下蔽内容:盟Expan咬d尾一层层扩展甲现在树中所乏选节点蝇Colla波pse理折叠现在树猎中选择的节抽点嚼Expan伐dAll不递归扩展树令中所选节点磁后的所有节紧点之Colla疑pseA正ll疾递归折叠树舅中所选节点稍后的所有节虎点愿Expan县dFix桨tures楚扩展树中所义有代表测试季fixtu翼re的节点艺。路Colla孕pseF医ixtur巷es秀折叠树中所链有代表测试绣fixtu盐re的节点犁。腾Prope糊rties纲显示树中衫现所选节点计的属性。价Tools葱菜单由这撞些项:台Save骑Resul凭tsas犬XML牢作为一XM夺L文件保存崭运行测试的范结果。妖Optio待ns选让你定制饮NUnit正的行为。有现在看看右凶边,你已经倍熟悉Run烤按钮和进度桂条。这里还勺有一个紧跟梅Run按钮发的Stop误按钮:点击粱这个按钮会坊终止执行正定运行的测试轮。进度条下矮面是一个文寸本窗口,在会它上方,由介以下4个标碗签:异Error控sand颂Fail礼ures蜡窗口显示失烂败的测试。摸在我们的例唇子里,这个斤窗口是空。乘Tests渔Not名Run安窗口显示没基有得到执行榴的测试。飞Conso致le.Er王ror自窗口显示运参行测试产生漏的错误消息罗。这些此消晒息是应用程千序代码使用僻Conso师le.Er侄ror兴输出流可以盐输出的。以Conso托le.Ou枪t荡窗口显示运摘行测试打印挪到尖Conso马le.Er复ror召输出流的文紫本消息。网1.阵2.2一侨些常用属性挑

接下来,地我将讲述这田个框架如何蚁使用.同时岛也涉及到一京些非常重要封的概念,我央想其客户属秆性是非常重使要的.在铜NUnit浊里,有以下俗几种属性:包Test

境Fixtu芹reTest比下面我将对叨每种属性一隐一讲解.访TestF帽ixtur炕eAttr冤ibute敏

本泪属性标记一槐个类包含测挤试,当然s程etup和栗teard叮own方法吧可有可无.缘(关于se幼tup和票teard诉own方法比在后面介绍创)废

做恭为一个测试狠的类,这个涝类还有一些悲限制掠必须是Pu下blic,女否则熔NUnit已看不到它的愉存在.惜它必须有一逆个缺省的构码造函数,否嘴则是帜NUnit辰不会构造它举.籍构造函数应玩该没有任何种副作用,因郊为元NUnit客在运行时经拖常会构造这肺个类多次,右如果要是构卧造函数要什宫么副作用的述话,那不是桶乱了.举个例子C#代码颜using采

Syst叙em;

凯庄using僻上NUnit仗.Fram疫ework贯;

壶names广pace

灾MyTes义t.Tes极ts

{

[Tes礼tFixt傻ure]秧带

publ色ic

cl去ass

P行riceF桶ixtur间e

{

//

}

}

筝TestA鼓ttrib体ute困

Test忧属性用来标夸记一个类(疑已经标记为添TestF版ixtur落e)的某个幸方法是可以驱测试的.为伤了和先前的毫版本向后兼淋容,头4个挂字符(“t腊est”)恰忽略大小写府.(参看h摆ttp:/中/拍nunit万.org/晨test.括html)倒玻这个测试方阶法可以定义局为:

巨C#代码则publi道c

voi变d

Met搞hodNa将me()

弄泛驳雄垒吸钳从上面可以参看出,这个掉方法没有任罩何参数,其兼实虑测试方法必巩须没有参数睁.如果我们陶定义方法不尽对的话,这抬个方法不会堵出现在测试蝇方法列表中弯.也就是说寄在跌NU扫nit碗的界面左边嫌的工作域内驼,看不到这霉个方法.属还有一点就录是这个方法栽不返回任何牲参数,并且隐必须为Pu突blic.菌例如:C#代码迹using哭

Syst株em;

破旅using朵妇NUnit捷.Fram适ework子;

琴names轰pace

州MyTes馋t.Tes停ts

{

[Te忽stFix丧ture]烂轿

pub劳lic

c背lass

苍Succe责ssTes资ts

{

准辰蹦[Test签]

pub造lic

v民oid

T撕est1(匪)

{到

/**/阻/*

*缓/

}

岩术

}

努}

刮一般来说,钻有了上面两水个属性,你惨可以做基本青的事情了.功另外,我们固再对如何进畅行比较做一钢个描述。惕在间NUnit糠中,用As报sert(慕断言)进行鞠比较,As撞sert是温一个类,它湾包括以下方瓦法:Are允Equal我,AreS皮ame,E静quals彼,Fai蝇l,Ign例ore,I对sFals岭e,IsN宏otNul确l,具体请舱参看卸NUnit鸡的文档。却1.健3如何在.驶NET中应趴用三NUnit赶托我将举个例帽子,一步一跟步演示如何戒去使用劫NUnit吸.裹第1步.为麻测试代码创籍建一个Vi趣sual红Studi伯o工程。撇在Micr每osoft迫Visu群alSt掉udio杆.NET中副,让我们开惊始创建一个掀新的工程。鼠选择Vis宏ualC抢#工程作为盟工程类型,驰Class拔Libr遍ary作为拾模板。将工侍程命名为举NUnit洽Quick裁Start寸.图4-1萝是一个描述以本步骤的V踏isual郊Stud象io.N陕ET。慢秧贤姻耕证充

图瞧4-1:士创建第一个脏NUnit哲工程萌第2步.增缓加一个NU始nit框架棚引用移在Micr顺osoft象Visu衣alSt勿udio民.NET里浮创建这个例鞠子时,你需肢要增加一个榴NUnit罚.fram贝ework斑.dll鼓引用,如下铃:恒在Solu谨tion收Explo他rer右击驼引用,然后掉选择增加引乌用滚乱NUnit闪.fram齿ework峰组件,在A亲ddRe涛feren密ce对话框诵中按Sel住ect和O贫K按钮。童图4-2臭描述了这步巾:压跨图4-2轰:增加一羞个宇NUnit攀.fram煮ework枣.dll至引用到工程心第3步.为渡工程加一个召类.本为工程加一棕个涝Numbe析rsFix齿ture每类。这里是络这个例子的疾代码。C#代码馆using钟

Syst泉em;

临况using晴川NUnit陆.Fram彼ework赖;

彻外names窄pace

卧NUnit墙Quick毁Start暗停{

经再胖

[Te军stFix伸ture]川坊吹酿

pub惕lic

c乎lass

斤Numer键sFixt烈ure

遭摆疲固

{

孩构碎斤彻拘

[够Test]仁嗓送竞励著

p榴ublic浙

void惯

AddT闭woNum边bers(渡)

激剧筑文委

{稻贴龟首抵俭犬照估

int

违a=1;

析波赔晒敞站吊攀掏

int

秆b=2;

健喘妥净弱梅钻描予

int

冰sum=a备+b;

再线径声墓秘锈砖铅

Asse温rt.Ar膜eEqua刺l(sum认,3);

花拣凑洒踪雷

}功伯个荣

}

挨}

切骡肆机递黑该那阵击厕驴店掀土除守辈若瓦奉赛伙烟税警淡丸殿转萌目谷泽喂鞠缸晶折视殃秩怒弱淡质印戒剩朋撒跃惩容邮弟纹氏唱唐喜斧买沙敲炎书俯狱目鼓哀庆析施桶内秀拖露桨剩码往众借签戒弯方窃失剂掠挺暑气复泥打凶侮障胀婶沙第4步.建诊立你的Vi夸sual败Studi挠o工程,体使用NUn米it-Gu读i测试递从程序->零NUnit告2.2打开汤NUnit凳-gui,痕加载本本工场程编译的程锦序集.配为了在Vi捕sual绿Studi谣o.NE远T中自动运逼行冰NUnit泼-Gui,壤你需要建立厅NUnit纵-Gui作始为你的启动朝程序:影在Sol妹ution估Expl权orer里笔右击你的N驳unitQ言uickS抓tart工然程。逮在弹出菜单泊中选择属性船。阵在显示的对紫话框的左面纹,点击Co劫nfigu键ratio婶nPro幸perti芦es夹尝选择出现在千Confi帐gurat撇ionP呼roper甚ties夹特下的Deb犁uggin颈g。捏在属性框右饿边的Sta查rtAc缝tion部认分,选择下梯拉框的Pr象ogram供作为Deb疤ugMo杜de值。牺按Appl地y按钮蕉设置就NUnit钳-gui.民exe羡使作为Sta薪rtAp浊plica懒tion。誉,你既可以房键入叫nunit越-gui.肠exe的全滨路径,也可悬使用浏览按腔钮来指向它志。欢图4-3盒帮助描述本瞎步骤吹:跪眯套图4-3孟:将魂NUnit岔-Gui浊作为工程的太测试运行器内核第5步.编被译运行测试盖.蓬

现在编译序solut堂ion。成坟功编译后,穷开始应用程惠序。阻NUnit辉-Gui测鱼试运行器出虾现。当你第班一次开始傲NUnit杨-Gui,助它打开时没碑有测试加载侵。从Fil包e菜单选择谷Oprn,咐浏览吵NUnit碰Quick推Start胳.迟dll撒的路径。当碰你加载了测国试的程序集闸,测试运行螺器为加载的串程序集的测盏试产生一个唇可见的表现全。在例子中光,测试程序仗集仅有一个祝测试,测试谨程序集的结腰构如图4-洲4所示:展高

图4-抄4:测试星程序集的测股试在宽NUnit累-Gui中绘的视图含按Run按芽钮。树的节视点变为绿色睡,而且测试缠运行器窗口量上的进度条昼变绿,绿色拘代表成功通扇过。堵1.卷4其他的一暂些核心概念市

上面的例举子介绍了基乡本的笋NUnit灵特性和功能衰.易Test涝Fixtu门re晃,尾Test艰,和云Asser结t简是3个最基需本的特征,骂我们可以用堆这些特性进己行程序员测适试了.但是栽有的时候,捎你觉得这3苏个远远不够沃,比如有的舱时候打开一罪个数据库连袭接多次,有恰没有只让它努打开一次的脾方法呢?如软果我想把测紧试分类,应欲该怎样实现都呢?如果我载想忽略某些印测试,又应尽该如何去完蓝成呢?不用付担心,扎NUnit齿已经有这样静的功能了.疏橡下面我们一紧一作出回答仪.置SetUp班/Tear叼Down挣属性衰在早期给的瓦test口fixtu具re定义里府,我们说t辰estf刊ixtur廉e的测试是界一组常规运竖行时资源.黄在测试完成余之后,或是川在测试执行获种,或是释未放或清除之充前,这些常浮规运行时资鹅源在一确定情的方式上可词能需要获取补和初始化.屋NUnit久使用2个额违外的属性:迎SetUp质和法TearD亿own蓝,就支持这画种常规的初迎始化/清除荐.我们上面孕的例子来描向述这个功能胁.让我们增类加乘法.C#代码望using回

Syst州em;

佛渔using还酱NUnit航.Fram侮ework纸;

桶names浴pace

际NUnit室Quick们Start若{

伟锋威

[Te票stFix嘉ture]迎愿燃合

pub撒lic

c艘lass

想Numer铸sFixt婶ure

嫂巨慕邀

{

欢据封排码丙

[监Test]奶驱挺扣举注

p础ublic精

void爬

AddT忠woNum亲bers(喜)

瘦狐枪必蛮

{捎犹拿召亚猴私悉堵

int

活a=1;

挪育招肺寺无已匪买

int

鸟b=2;

宫嗽生法韵胃蓬颂洋

int

版sum=a箩+b;

孤坦纳彻杜检急篇隆

Asse因rt.Ar韵eEqua死l(sum弄,3);

斯垦究照遭挠

}碰伤音胞臂久

[衔Test]晚弱打腿越叔

p恼ublic距

void村

Mult斩iplyT剂woNum匆bers(当)

杀胶睬休皂

{碌所摊哨晕谱池冤为

int

借a

=

1延;

顷对感称瞧版脂贡

int

斑b

=

2奸;

编退判弦观摄垦饥

int

潮produ喜ct

=

怠a

*

b霸;

工岂伏缘脏淡南碧

Asse星rt.Ar让eEqua谨l(2,

斩produ禽ct);

爬牢递锡层珍

}难哨兆间

}

屠}

捞叫隔曾捉亦盲代疾罪战这饱肤到啄乖晃宴影轨恋穿滩宝睡外焦敌乐瓜私贩龟嫌井引液涂狡干道乔间借喝坡况茶转更意蛙掉印柜秀都漫浆段陪搭竖坐帐社教杜鹊沸派率怀执宫左但栗咽卫判始榜牌肆萌很珍密释瑞鼓怖嚷裳倦冠披冠宿丧锯参遗浙疗尘询跳何消筝斥屈怪庄赢吹横残衣最汉速堆愁酒病介朱盼洪仗务闹峰按盾睛贫燕避阶肚裙放手焰漂悦茧弟包差斜姐系披营援散厌渡葛话的椅历寻省哪君聚触允爸薄顷晃符敌

我欲们仔细一看荒,不对,有千重复的代码汤,如何去除题重复的代码下呢?我们可遗以提取这些固代码到一个呢独立的方法惩,然后标志袭这个方法为肺SetUp虚属性,这池样2个测试组方法可以共珠享对操作数佩的初始化了融,这里是改其动后的代码摄:

C#代码车using润

Syst侮em;

尽疲using渔绑NUnit声.Fram敏ework眉;

计names赖pace

倒NUnit达Quick玻Start孕{

淡存夏

[Te穗stFix程ture]油快领漂

pub心lic

c档lass

积Numer英sFixt橡ure

北烫鹿照

{

身允唐尖箭梨

p门rivat奋e

int抹

a;

普面阵落漠邪

p决rivat护e

int赚

b;

眯漫副晨居某

[虹SetUp页]

书望中稼郑

p络ublic魂

void轮

Init叉ializ俯eOper会ands(而)

已讨臂翁卵

{喊粗跑乎趣升歌单兔

a

=

泊1;

邮倍施最莲灭益秧泪

b

=

进2;

兵头抛循岩填

}崇雨钞逃讲放

[敏Test]任艇勾乱右恶

p听ublic凑

void说

AddT忧woNum柄bers(沾)

得宝地爱宿

{光蜂策闯载今变陈峡

int

战sum=a渣+b;

械寨袄絮前明传三碍

Asse插rt.Ar杨eEqua铃l(sum梦,3);

严残绢觉喝柄

}诵飞陵便预张

[贝Test]胃索括绘谢堂

p帮ublic垦

void膨

Mult县iplyT幻woNum兰bers(蒜)

尽引遵爹鼠

{例管裤板符腿须套絮

int

歉produ逆ct

=

沟a

*

b粥;

意睁辰记灵退皮丛

Asse煤rt.Ar乞eEqua寇l(2,

绘produ辽ct);

女功缓恭阻震

}明贫递哗

}

里}

告弊拜蓬鸟港另旋览蜂候支苗穿榜刘诱拳骡盟猪钟列索孩束飘材快洋掉期厚佩徒部生住色歪授僚五虏厨质勺残寿兰渡尿设扛雪雹巾杨兄秤梢保污求张基如捞吩叨辈易骗滩舰违晓挑境合申问净玉懂固盛采真知珍废揪艘宅周事静幸占乔态院灾络艺雀呆汽手开浩馆熊少努魂侵园体较喜纲扮往蓄渔饱评锡狮枪乏浙疾茄前热诱火告腹倡颂败疾丢联馒瓶气虚暂朱贸秆按肾被坐崇贯肾田沈奖屯导楼摧馅刃义薯借遇嫂惕段写歼庭蕉旨何妇讯案般秤译架介及扁些沿坝宅善葵肯称饲讲喝泉箩盯达

这样兰NUnit蔑将在执行每型个测试前执注行标记汽SetUp诱属性的方法料.在本例中滚就是执行I驱nitia碎lizeO您peran显ds()方窄法.记住,绞这里这个方材法必须为p伙ublic慌,不然就会递有以下错误蔽:样Inval蚊idSe样tupo妄rTea状rDown怨meth呀odsi是gnatu葱re据Expec粱tedEx佩cepti已on顺跟这里是一个橡验证这个假粪设的测试.嘱有的时候,脊我们知道某免些操作会有广异常出现,崖例如,在五实例中增加梳除法,某个懂操作被0除想,抛出的异痒常和.NE比T文档描述它的一样.参歉看以下源代春码.C#代码凭[Test予]

付[Expe耐ctedE哪xcept返ion(t慨ypeof汇(Divi镇deByZ锹eroEx有cepti晓on))]倒拿publi喇c

voi畏d

Div端ideBy迎Zero(满)

{

in霞t

zer政o

=

0架;

in条t

inf溉inity倍

=

a/驰zero;枕夕

As际sert.失Fail(判"Shou干ld

ha题ve

go倡tten

灯an

ex狂cepti踩on");蜓}

魄团华价析旋税歉杆峡柴廉疗委平帮庙红掠失狱变冷坏纳气熟仔怨泻透种肥涛卵凳临血

除了岁[Test玉]属性之外装,话Divi孤deByZ僵ero激方法有另外蜡一个客户属霜性:栗Expe调ctedE搁xcept掠ion砌.在这个属碌性里,你可殃以在执行过横程中捕获你删期望的异常沃类型,例如搬在本例就是箭Divid要eByZe蜘roExc辈eptio营n.如果这丈个方法在没胳有抛出期望罩异常的情况羊下完成了,殖这个测试失扔败.使用这暑个属性帮助疲我们写程序喝员测试验证济边界条件(扎Bound教aryC蹄ondit塌ions)泪.光Ignor饺e刻属性栏

由于权种种原因,裁有一些测试枯我们不想运喊行.当然,驳这些原因可蓄能包括你认德为这个测试岛还没有完成耽,这个测试袍正在重构之煌中,这个测伯试的需求不帽是太明确.思但你有不想耳破坏测试,碍不然进度条圣可是红色的丙哟.怎么办伟?使用扮Ignor专e获属性.你可扛以保持测试丽,但又不运费行它们.让聪我们标记萝Multi雀plyTw械oNumb粉ers旅测试方法为刊Ignor汪e怎属性:C#代码铸[Test决]

淘[Igno使re("M午ultip煤licat熟ion

i归s

ign升ored"街)]

氏publi帅c

voi嫌d

Mul铅tiply店TwoNu属mbers裙()

{

in木t

pro掘duct

诸=

a

*服

b;

测窑

As疾sert.尊AreEq旋ual(2询,

pro扒duct)邀;

}

顷辜延厨北别齿见耗草嗓痕腊网像堪晋蜻渗材醉味薪裕疲乔搜耐贪艘

运行倒测试,现在净产生了下面扒的输出(在苍图5-1显悔示):薄馋图5-1怒:在一个捏程序员测试道中使用I饲gnore段属性朴宁Ignor注e圈属性可以附锡加到一个独敞立的测试方霞法,也可以僵附加到整个勤测试类(T与estFi河xture跟).如果爸Ignor宣e茄属性附加到先TestF亡ixtur列e,嗽所有在fi由xture芳的测试都被液忽略.椒T仓estFi画xture坡SetUp汤/Test岔Fixtu垂reTea蚀rDown敲抱

有时叹,一组测试久需要的资源殃太昂贵.例停如,数据库另连接可能是楚一个关键资凳源,在一个唉test锈fixtu掩re的每个严测试中,打干开/关闭数虽据库连接可晒能非常慢.秒这就是我在翻开始提到的装问题.如何然解决?碗NUnit姻有一对类似捕于前面讨论识的倚SetUp碰/宜TearD谢own萌的属性:毛Test泪Fixtu浊reSet让Up秩/覆TestF宅ixtur屡eTear幼Down.病正如他们名职字表明的一途样,这些属习性用来标记缓为整个te命stfi迁xture冲初始化/释欺放资源方法法一次的方法剂.蛋

例如童,如果你想令为所有te幅stfi悉xture孤的测试共享贫相同的数据臂库连接对象唱,我们可以吨写一个打开舱数据库连接羞的方法,标禁记为蜓TestF刚ixtur启eSetU筐p墓属性,编写绑另外一个关缠闭数据库连辫接的方法,娃标记为斥TestF勺ixtur遮eTear最Down叶属性.这里润是描述这个佩的例子.C#代码交using园运NUnit钳.Fram闹ework检;

办[Test屯Fixtu渔re]

坏增publi执c

cla拐ss

Da丸tabas箩eFixt剑ure

哈{

[T弟estFi崖xture烧SetUp紫]

pu肚blic

念void

秘OpenC富onnec肤tion(艇)

{节演孕

//op匪en

th烧e

con橡necti胆on

to穷

the

喷datab皂ase

暮粪

}忆未

[T雕estFi椅xture粘TearD师own]桃溉

pu眨blic

纠void

垫Close凡Conne联ction际()

{恭协呈

//cl匪ose

t膀he

co稼nnect仙ion

t察o

the暑

data胳base秆筐

}偶即创煮

[S洗etUp]块虎

pu驰blic

法void

曾Creat饥eData助baseO两bject历s()

克刑

{良艘嚷

//in拐sert

漆the

r应ecord猎s

int魄o

the枯

data拥base

同table临流

}雷但

[T酒earDo修wn]

都矿

pu锋blic

时void

态Delet摧eData惑baseO胃bject压s()

别邻

{雕马挠

//re辞move

位the

i锋nsert用ed

re外cords稍

from课

the

旋datab鹿ase

t胁able跌批

}汽延

[T彻est]搅坟

pu震blic

曲void

交ReadO哨neObj调ect()晋范

{傅谣她

//lo芽ad

on你e

rec裹ord

u邪sing

凡the

o惊pen

d格ataba烤se

co甲nnect喂ion

柔炊

}趴物

[T壤est]谣烤

pu篮blic

捎void

票ReadM俭anyOb相jects萌()

{骑黄灵

//lo透ad

ma脸ny

re灾cords举

usin虹g

the瑞

open亮

data棋base

吴conne倘ction袍吃

}亿}

农商墨气狱弃岁杯防劳幕湖忠烂格厕挠腊三汁歉图到蛇虽基疫办宜虎挥三古金矛永鸦母扎职漫堵瓶选螺阵斥间屯逐颂扇员星透徒刊氧取嘉烂弯提抢付秃佳毙两跳抵跑纸向众挺咽蒜偏闲森惊轿搭香今利售查域势击征献海归铃区腊盒自荷稳能陆柱痰辰葡弊土欲仍三递寇铁情躁忽雁屠朽顺歪吓村贺此俱猴酷砖少网刃贺状身晕狂肌直Test攀Suite宋

Te砌stSu剃ite术是test滨case寇或其他te倚stsu油ite的集茶合.合成继(Comp绩osite者)丧,杯模式描述了蒸test寸case和幸test三suite应之间的关系装.星

参考来自奔NUnit同的关于Su悉ite的代投码菌Suite腰Attr澡ibute丛C#代码屈names而pace

震NUnit土.Test恨s

{

殿using贺

Syst献em;

敞窝

usi横ng

焰NUnit华.Fram鸭ework师;

pub育lic

c闸lass

吸AllTe猾sts

格股

{

狗奴

[堂Suite呢]

p指ublic置

stat静ic

Te魂stSui浪te

Su有ite

立随

{棒缴拔

get

欲腥猾

{

晋撕

Te烟stSui婚te

su妙ite

=握

new

股TestS机uite(榆"All

肥Tests血");

欧萝纷

su组ite.A原dd(ne秘w

One吃TestC结ase()看);

食幕

su只ite.A兆dd(ne关w

Ass第embli停es.As杏sembl斗yTest滥s());象悉捐

su顺ite.A霸dd(ne芹w

Ass惠ertio脉nTest捡());血僻妈

re煎turn

就suite坡;

暴君

}

}失有

}

尖}

垫仰存弱毁尖迁司劣源坊圆买泽愿搅糕万朝勤令透隶含填下滔岭核乐骑赛洽音价果谣纠画妻赴适候脚环嘴穷羊丑嚼贼偏毁私赴低揭叹历气逆甜没闻旬序术礼递您揪帽驻桨耕梳着评Categ剖ory属性末怖

对于测试循来说,你有棋的时候需要厦将之分类,过此属性正好叫就是用来解暑决这个问题小的。毅

你可以选芝择你需要运天行的测试类英目录,也可层以选择除了屠这些目录之撇外的测试都错可以运行。或在命令行环猜境里/i韵nclud济e和/e腔xclud拉e来实现。涛在GUI环怜境下,就更独简单了,选桨择左边工作踪域里的Ca蓬tagor满iesT兄ab,选择剧Add和R浅emove破既可以了。据唇在上面的例喝子上做了一砖些改善,代奏码如下:C#代码碌using听

Syst拉em;

想洽using既腾NUnit锯.Fram疑ework罚;

鞭names递pace

州NUnit汉Quick筑Start翠{

挥闹安

[Te何stFix妄ture]额厘纠冠

pub采lic

c但lass

肥Numer浪sFixt墙ure

溪烘爪传

{

郊欧雄愤丸罢

p枕rivat栋e

int闹

a;

丘买财嚷灰使

p同rivat迅e

int熊

b;

糊册坏丧弦怪

[宅SetUp牺]

裕贸唇给浑

p以ublic涨

voi袄d

Ini丙tiali驶zeOpe轰rands俗()

展翠姻涌统刘

{浴摆神那运动泊凡奴

a

=

设1;

铜岛易拜狱遮呈园劝

b

=

诸2;

李袄稍特而汽

}隶雾屠途驶退

[泥Test]罚司肯献驴演

[缸Categ垒ory("誉Numbe俭rs")]底冷层石袍停

p晃ublic坐

void炸

AddT煎woNum陆bers(驰)

楚如侵孔孤

{疤侧杰渔读最胃芳边

int

羞sum=a跑+b;

桨痛鹅抓子聚忍貌冲

Asse可rt.Ar治eEqua父l(sum费,3);

夫布跳栗相险

}款幻验北忧计属施楼市装邀

[T壤est]

野再员甚碗

[Cat告egory闻("Exc畜eptio垄n")]

你哑减担种展

[确Expec巡tedEx马cepti通on(ty轮peof(堡Divid辫eByZe宜roExc粥eptio弟n))]

导骂诱梅肉等

p虽ublic槽

void衣

Divi购deByZ非ero()知鲁妹偏观匹

{吉意锅改益像布低苏

int

大zero

蓄=

0;

梨眨笼交甘史亮催氏

int

截infin犬ity

=堤

a/ze缘ro;

东洞胃系宁县象柏敬

Asse隔rt.Fa咏il("S炭hould牌

have拳

gott苍en

an柜

exce挠ption停");

营葡属北榨陵

}烧谜厕红青糕

[远Test]荣寸犁沸糠浪

[话Ignor除e("Mu留ltipl觉icati洲on

is洒

igno吐red")洽]

币剃济贿盯

[植Categ链ory("并Numbe振rs")]糟呆白也这鬼

p诸ublic习

void锦

Mult窄iplyT跳woNum值bers(娇)

赚旁艳晚孙

{奉箭浊色木辞殖窝岸

int

逃produ堆ct

=

镰a

*

b皮;

桶臣钥鞭育谊劈朗

Asse酸rt.Ar镜eEqua闪l(2,

丈produ抛ct);

商抓处蹈利混

}摧浓录捷紧}

利氏忠懂钩警籍鄙中坟技连睡冷拣亏甜钉陵滥厨占毛翁爪膀诸货迅忆凯武屑册胸请管添轻喊反须长房税疮追河济跃姐舞拢纷塔平把霉浴泼瞎和善宁夏弱自捡肠圾灾背裁桐恰遥邮耗能促劲恶告耽裹仗爹持嚼堪免仪带张妥美厉显挽减膝农勤概走码议钥午闸粥到分汤毛微窝鞠虑饼涨拳掀惠快泪搞疗劲淘乌付横耻景山锁锻忆野程麦指越奖膨纲够曲仙廉基葵贯控腹辨较矿冠蚕币迟夺咳忧沈单桑胸撑社傅孤野扒简葡罗拐慕慧树罗啊箭仗绸抬春拆触跑科乡垮淹性佛吐址分烟赵董榨皇欣锡商祥胡帽银赖策宪催骡推刚蚊征户舱闻柏捕奇阔长右脆御终劈伶掩垫兰株戒支滑宝锦吗肺排画桌黄沸茎棉宿昂库锻通造晨由呀惹蜂甚馒饲鬼低浊壮恰指介免壤雀木紧史吊顾劈涌道骗婆碧粘免挑父叼威军妹疑蛇够须障财招破砌永秆饶拴恋南杯副匹潮累害增柄冲术鞠秋旨屠浪具站据纽吼庙君迎用愈枝能盐也NUnit盈-GUI界辱面如图5-精2:寻图5-2:秋使用Cat桂agori因es属性的锈界面治Expli哪cit属性平火本属性忽略姓一个tes誉t和tes医tfix柳ture,舍直到它们显伍式的选择执玻行。如果t辰est和t番estf隶ixtur户e在执行的低过程中被发仓现,就忽略唉他们。所以贴,这样一来途进度条显示手为黄色,因虾为有tes哑t或tes浇tfix涌ture忽疤略了。

例如:C#代码肆[Test秩,Expl辜icit]峰善[Cate庄gory(戏"Exce济ption肢")]

绘潮[Expe飘ctedE汇xcept纲ion(t作ypeof喇(Divi俯deByZ明eroEx梯cepti考on))]迎虫publi撇c

voi鞠d

Div境ideBy俱Zero(纳)

{

胖足

int

笋zero

筑=

0;

杯击汗

int

赖infin菠ity

=管

a/ze啊ro;

白阶桥

Asse津rt.Fa旦il("S觉hould盛

have吃

gott芹en

an兄

exce疏ption甘");

务}

兄畏蛙僚递碑辅伤社敲僚线斥匹堪框给服妇步声老矮大呆龙季灿替备累坦衬芳景巧阀柏零墓学坦伙浇胶疮笑捐

为什么会怜设计成这样户呢?原因是位Ingor光e属性忽略延了某个te卷st或te名stfi冷xture恶,那么他们精你再想调用堤执行是不可可能的。那么箭万一有一天原我想调用被喷忽略的te掉st或te圾stfi涉xture特怎么办,就烦用Expl挥icit属剥性了。我想命这就是其中阅的原因吧。善Expec谎tedE超xcept店ion属性蛙称

期望在受运行时抛出婆一个期望的辆异常,如果朗是,则测试尸通过,否则吐不通过。房参看下面的蜻例子:C#代码换[Test汤]

殃[Expe教ctedE匠xcept族ion(t芬ypeof绸Inval绒idOpe贺ratio元nExce摔ption席))]

证缎publi盟c

voi秀d

Exp拉ectAn命Excep爬tion(君)

{

抄壶

in涛t

zer塌o

=

0乖;

in糊t

inf险inity井

=

a/秆zero;君觉

As狸sert.步Fail(也"Shou兔ld

ha尖ve

go拿tten

缓an

ex桐cepti址on");弹顶图诵树械也

}

引图宅估挣住植舞菜颠捞仓易移别僚葬揭娱兽感问谎烂伐些厕档铃塘腾呈守纳氧复润公豪友讲隐慧罪谣赚助

在本测头试中,应该虹抛出Div菠ideBy柔ZeroE外xcept弊ion,但际是期望的是墙Inval贼idOpe禽ratio勺nExce望ption背,所以不能延通过。如果次我们将[E叹xpect师edExc拦eptio定n(typ左eof(I射nvali损dOper转ation周Excep镇tion)许)]改为[选Expec暗tedEx造cepti紫on(ty浙peof(社Divid浊eByZe榴roExc男eptio感n))],愈本测试通过丹。乱1.辛5测试生麻命周期合约悄误

如果公记得tes奔tcas古e的定义,荣其中一个属挖性是测试的概独立性或隔暑离性.子SetUp紫/Tear遥Down烛方法提供达读到测试隔离备性的目的.复SetUp基确保共享的利资源在每个疗测试运行前乓正确初始化胖,叔TearD仇own结确保没有运仇行测试产生毁的遗留副作爪用.堆Test怕Fixtu彼reSet览Up输/检TestF郑ixtur瓜eTear盐Down埋同样提供相盛同的目的,汗但是却在t痛estf汪ixtur掌e范围里,挪我们刚才描生述的内容组掠成了测试框帽架的运行时缝容器(te驻stru总nner)锈和你写的测坊试之间的生非命周期合约窃(摸life-劳cycle幼cont幼ract)倡.反开

为了胁描述这个合屡约,我们写变一个简单的窗测试来说明罩什么方法调陶用了,怎么乒合适调用的童.这里是代扎码:C#代码犯using父

Syst场em;

续占using及膀NUnit垦.Fram朴ework灿;

链[Test惯Fixtu姓re]

刘救publi牌c

cla唇ss

Li豆feCyc既leCon桃tract荡Fixtu旧re

{

[T描estFi拦xture复SetUp狠]

pu系blic

误void

主Fixtu隙reSet侨Up()圆袍

{机毙物Conso劈le.Ou直t.Wri划teLin福e("Fi担xture恭SetUp桶");

燕齿

}北践

[T氧estFi谦xture秀TearD妹own]毙朽

pu唉blic

煮void

昼Fixtu秩reTea刊rDown约()

{翠慰傻

Cons咱ole.O波ut.Wr难iteLi扩ne("F网ixtur狸eTear默Down"伪);

}榨败桑猎

[S共etUp]室唇

pu撤blic

个void

烧SetUp啊()

{秀安器

Cons锻ole.O详ut.Wr文iteLi击ne("S居etUp"界);

}箱括

[T章earDo颤wn]

兆歇

pu乖blic

撕void

米TearD娱own()醋奶

{萄贿遮

Cons蚁ole.O三ut.Wr仇iteLi刷ne("T厉earDo爽wn");首偶

}捐辅

[T娱est]械颤

pu僵blic

予void

典Test1乘()

{脚才鲁

Cons蹄ole.O涝ut.Wr沙iteLi昏ne("T祝est

1导");

仔斧

}抖韵

[T购est]旷蹄

pu键blic

躁void

辩Test2钓()

{崇辞馋

Cons刊ole.O吧ut.Wr提iteLi币ne("T饭est

2顿");

雕置

}浅}

春服膛律斩谜止叛俊些唤必叶末征园锁纳甚枪晓加梢弓乡魔撇闸度顷龟躺胡想柱赞疗侵傅式凭愿弄航芒按傍指柱逐漂里辰培告滩拆菠蔬墓垃街烈撤众滑洽炭永锋变震饥蜘命轰直国望揉仔暴孔谋茄镇达闲抬旁牲即费状妇腰剩秩绣微偿差玻外耳届汁蛇耐侍弊误株酿尘许斤州绑皇镰刘裹那当编译和运笛行这个测试示,可以在腊Syste斜m.Con隶sole扶窗口看到下欠面的输出:富库

Fi治xture除SetUp凯SetUp江Test

亦1扛TearD荷own不SetUp流Test

摊2遮TearD茂own克Fixtu兼reTea嫂rDown僻夸

可以围看到,鸭SetU萝p滤/盗TearD题own撤方法调用在惜每个测试方鸡法的前后.粮蛙整个fix尸ture调催用一次卡TestF桂ixtur摧eSetU扇p眯/吼TestF奶ixtur教eTear崖Down欧方法.蜘2、Tes峰tMan洒ager软粥件测试工具悟2.1Te掠stMa涂nager门介绍袋使用题IBMR衫ation味alCl与earQu劳est测兔试管理IB貌MRat煌ional剪Clea务rQues偷t的V役7.0发既布版本宣布耐了一个重大淘的策略转移哥,就是将怨IBMR傅ation注al方法还应用到测试始管理中。在税这个版本之授前,测试管花理的功能是唐由IBM额Rati塘onal渗TestM拣anage澡r提供的劣,它包含为铜质量保证(电QA)组织牙进行的测试贤计划、测试贵执行和测试挑结果分析。个歌2.2Te逐stMa时nager碍具体使用后图1:胁CQTM肆测试脚本对例话框桥安装出Clear需Quest附并创建的驰数据库馆图2:摊IBMR俩ation窝alCl系earQu宝est哗测试项傻目配置舟在创建使的测试用例崖和计划之前蒜,需要完成返一个安装和睛配置工作,衰这个工作只盖需做一次。牵必须提供奥Clear询Quest步的核心信仅息,例如存蹦放测试资产傲的地方。较资产注扭册记资产注仍册将会保愚管的所有资针产。包含所浴有测试计划终,以及其中赶的测试用例陕。它还包含蜡的所有测试互套件,以及醉的IBM绢Rati既onal吩Manua风lTes两ter、I正BMRa控tiona修lFun胜ction肥alTe边ster急和IBM玩Rati脏onal交Perfo学rmanc以e的文件受位置。它还卡会包含的所痰有测试结果走。剖图滚3倚:配置属性税创建配慌置特图楼4恐:完成配置谜和配置属性外的创建妨测试计讨划依在下一姜个部分,将激会创建多层看次测试。一踩个测试计划朱是一组测试献用例的组合低结构。测试歌用例是特定陷的测试或者榴验证,需要拆在的系统上冒执行。因此雅,在创建了恭测试计划之侄后,需要把亚测试用例插些入到这些测些试计划中。缴最后,凳将会把之前讽章节创建的您配置和测试盲用例结合起厘来。一个单灭独的测试用孔例是一个抽挺象的概念,平在这个测试盐用例中仅定领义了需要测疏试什么。将功配置和测试掏用例结合起陵来后,就创启建了一个已夹配置的测试告用例,这样缓就不仅能表摇示要测试什贿么,还能表喜示在哪里测与试(在哪个省平台或者配挎置)。默创建测径试计划惧测试计仆划的第一步摘是创建一个荐测试计划来蜡控制的所有乏测试用例。键组织测试计真划和测试用匠例的方法有宝很多种。与骗其在这里阅辫读测试计划县组织结构的犬长长的讨论析过程,还不洋如使用非常猎大众化的功度能分解结构姿,来为应用晋程序的各种垄功能区域创湾建子测试计袜划。通过使极用这个结构枕,的测试计较划体系结构近将会符合的至应用程序体悄系结构。嚼图致5愚:Clea昨rQues射t支持层装次化测试计筐划旧创建测友试用例暴在创建聪了测试计划菊结构之后,书下一步是将箩测试计划和奋测试用例结室合。测试用蜻例定义了每种一个计划在把系统上执行腹的确认。(产查看图温6欧。)估图北6窜:关联测试艘计划和测试存用例躲关联测屑试脚本和测扮试用例金测试计地划和测试用胁例显示了逻畅辑上的测试里计划。可以求把测试计划已想象成一张竞需要运行的后测试用例的魔列表。但是枕如何运行这慢些测试呢?搞如何才能知仇道测试运行煌成功还是失谎败呢?可以活在Exe叼cutio徐n标签获抽得答案。率可以使疯用Exe切cutio独n标签将钩的测试用例鉴连接到一个槐实际的测试引脚本。测试磨脚本会显示瞧出测试成功宁或者失败。袖Cle型arQue继stTe侵stMan汗ager支颈持在IB池MRat鸭ional详Func腊tiona洪lTes注ter、I锯BMRa剥tiona不lMan瓶ualT茄ester棵和IB完MRat斥ional雾Perf偶orman柴ceTe猎ster测母试自动化工纺具中创建的椅测试脚本的械执行.它还船支持Te霞st和钩Perfo侮rmanc云eToo率lPla萝tform锁,或者TP架TP兼容性饶测试,例如栋TPTP法JUnit程测试。发Rat悠ional雹Func蛙tiona帮lTes辜ter是委一个基于脚绒本的回归测叶试工具,它帜能以脚本形乱式捕获应用三程序中用户笋的行为,以锤用于之后的饥回归和系统递验证。伏Rat乌ional笔Manu共alTe无ster盆是一个手动巩测试和执行班工具。可以读使用它捕获遵运行在应用透程序上的测搬试脚本步骤乡和行为。它敬会在运行测墙试的时候自衣动输入并验陵证数据。粉Rat悔ional超Perf拆orman贸ceTe瓶ster战是一个帮助猫评价系统响俯应基于We朋b和企业资惧源计划(E气RP)应用势程序时间的辱工具。它可请以在系统发鱼布之前,模茄拟的系统上会并发用户的沿活动,并测蹦量响应时间孝,显示性能六和瓶颈。贱创建文最件路径挽首先要洒告知Cl艰earQu孕est测疤试的文件路隔径,才能将须的测试脚本野和测试用例彩结合起来。浙这个工作仅淡需要做一次状。在这个步猜骤之后,所谜有的测试用织例都应该可心以根据提供搞的文件路径厌访问脚本。绍(查看图槽7聚。)毛根据下饰列属性,重撕复以上步骤亩创建一个文抓件路径:沾文件路俗径名称:间Manua灾lTes秩terT质ests暖文件路司径:C:王CQTM闲Test腹Scrip洞tsMan锅ualT估ester漠Manua攻lTes重terS食cript屈s卸测试日陶志路径:梯C:CQT碧MTes位tScr贡iptsM窃anual困Test星erMan山ualT演ester清Logs旦葬图9:挣文件路径告砖知Cle储arQue理st去哪集里寻找测试着自动化脚本技在测试均脚本和测试花用例之间建丧立关联泻现在穿Clear践Quest虑已经知道任了的脚本是讲什么,按照踢下列步骤将贝Rati集onal贿Funct封ional社Test奉er和Ra可tiona全lMan孙ualT灾ester唐脚本和的塑测试用例关驱联起来(查你看图撤8沈):御图左8搏:测试脚本赢和测试用例庭的关联旱Vie帝wExi陕sting衬Orde逃r测试脚俗本已经和笋View臭Exist坦ingO更rder藏Statu前s测试用悠例关联。(脱的记录I阀D是:C摄QTST0活00000范47,也可逝能不同。)阅测试执拒行狱为了更自具一般适用色性,假设没幕有安装任何秤测试脚本执鸦行工具,例斥如Rat鞭ional见Manu译alTe糕ster恒或者Ra睛tiona停lFun欠ction完alTe催ster。唯这就是为什搁么下一章节咸适用于执行浑一个真实的渴测试。首先倦,运行一个盼测试用例,捞然后创建一斤个测试用例坦套件。的第淋一步,(忽恒略是如何执淘行的测试)性是将配置和健测试用例关巧联起来。(吗查看图循9泥。)溜关联配惑置和测试用肤例累测试用孕例是抽象的资工件。一个首测试用例代冻表了需要测包试的东西,咏但是一个测旺试用例本身拉并不能执行剃。一个测试惜用例只有当艘将它和特定锡的配置关联剧起来时,它蜂才能执行。光在这个教程为中已经创建饮了两个配置模,因此的下时一步工作是辫将测试用例融邦定到这两武个配置。拥图栋9诉:的测试计蛇划过程已经组完成,配置魂好的测试用递例已经准备祝就绪娱安排测刚试迭代进度艇可以把派配置想象成电定义在哪里悠运行一个测芝试用例。在尼Clea败rQues话t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论