版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国矿业大学计算机科学与技术学院软件工程实践报告专业:计算机科学与技术班级:计科11-1班设计题目:最土团购系统指导教师:刘佰龙2013年12月25日徐州课程设计指导教师评阅书指导教师评语:成绩:指导教师签字:年月日目录实验分工及组员心得 4系统简介 61、时代背景 62、模式介绍 63、网站架构 7第一章利用Visio绘制DFD图 101、顶层数据流图 102、一层数据流图 103、二层数据流图 113.1、注册登录 113.2、商品信息 123.3、订单 123.4、评价 133.5、查看 13第二章UML工具的使用 141、StarUML简介 142、图形绘制 152.1、用例图 152.2、类图 162.3、序列图 162.4、状态图 182.5、活动图 19第三章软件源代码管理 201、SVN介绍 202、SVN软件使用说明 20第四章使用软件测试工具 281、Nunit软件测试工具 281.1、TDD的简介 281.2、NUnit的介绍 281.3、如何在.NET中应用NUnit 331.4、其他的一些核心概念 36TestSuite 36Explicit属性 38ExpectedException属性 391.5、测试生命周期合约 39
实验分工及组员心得成员实验分工实验心得王波〔组长〕第一阶段:绘制数据流图第二层第二阶段:绘制活动图、写报告软件工程课程上了也有半学期了,对于软件生存周期内各个阶段的理论知识、分析方法以及应用软件有一些初步的了解,但只是停留在一个理论层面的认识,没有经过实验的稳固。经过这次实验,让我对这些知识进行了一次系统的回忆,在此根底上又有了一些新的体会。例如,在绘制数据流图时,软件的功能十分多样,且复杂无规律,如何把这些有些杂乱的功能分成有序的几个模块,对于我而言是个难题,这个过程实际上一定程度上是在再现软件开发人员的分析过程,让我受益匪浅。还有一些分析方法和图形,之前只是初步了解,但经过自己亲身使用绘图之后又有了更加深入的了解。总之,理论知识只有经过实践才会得到验证和稳固。徐华君第一阶段:绘制数据流图第一层、写报告第二阶段:绘制类图和序列图这次实验让我对一个程序的生成以及到最后的测试都有了更新的认识,在课堂上学到的知识在实践中得到了稳固。在实验过程中理所当然会遇到很多问题难以解决,但正是这些问题才告诉我哪里有缺乏,哪里还需要学习。在大家的一起努力下我们克服了一个又一个是难题,随之提升的还有我们自身的技术水平。通过这样的实验,带给我们的不只只是最后的实验成果和实验报告,还有过程中我们收获的经验和体会。王柳前期准备:寻找选定实验软件第一阶段:绘制数据流图第一层第二阶段:绘制用例图和状态图上过软件工程之后,这次实践课给了我一个很好的时机去熟悉并掌握关于软件工程的相关知识。以前对于这个东西只是停留在书本的阶段。现在终于有时机可以练习一下。其实开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。在我看来,除了第一步外,其余的步骤应该是一个循环的过程。在编码的过程中,你总是需要不断地回过头来修改原先的模块设计,甚至最初选定的实现算法。
具体到每一步的工作要怎样完成,是非常灵活的,只要把握住大体的方向就行。在进行分析,设计,编码,调试,维护这几局部的工作的时候,最核心的就是文档的编写。最后,我从这次试验中收获颇多。系统简介随着世界经济全球化和Internet的兴起,电子商务以它本身所具有的开放性、全球性、低本钱和高效率的特征,建立起了企业的网络和信息优势.企业要想将这种优势转化为商业竞争的优势和利润,就必须对企业的营销战略不断进行创新.电子商务时代的到来,使得经济生活完全打破文化习俗的影响,排除了语言交际的障碍和意识形态的差异,使整个世界联为一体.而Internet条件下的企业和消费者之间通过网络迅速连接起来,消费者成为购物的主导者,所以购置商品或效劳的意愿已完全掌握在消费者的手中,这样传统的“销售商向顾客推销”的方式正在转变为以“消费者满意”为中心的主动的“个人营销”.因此,现代成功的企业正在将自己的营销观念转向电子商务条件下“以顾客为中心”的营销.电子商务对企业经营管理带来新的影响.电子商务是当前Internet最重要的应用,是在企业信息化的根底上互联网技术应用向前推进的必然结果.信息技术和系统集成技术的开展与应用,企业内部的沟通与协作将得到极大改良;Internet可以为客户提供全天候不间断、个性化的效劳,从而提高效劳质量。美国互联网什么最火,中国就出现什么最热的模仿,这几乎是定律。从早期的新浪、搜狐模仿Yahoo,到后来的百度模仿Google,再到腾讯QQ模仿ICQ,这条中国模仿美国的互联网之路,从来就没有变过。如果说2009年除了继续保持热度的Facebook与twitter外,还有什么网站更让外界感到惊艳的呢?答案肯定是号称年营收高达5000万美元、且斩获3000万风投的团购网站——Groupon。Groupon团购模式有人称之为团购2.0,团购2.0起源美国,主要代表网站有woot和groupon等,它与传统团购网站的区别是,第一,网友登录网站后,不需要在眼花缭乱的商品中寻找自己想找的信息,整个网站首页只提供一件商品,简单明了,防止网友花费大量时间浏览无关的页面。传统的团购网站,像中国团购网等,这些网站提供的商品折扣非常低,有些只有97折、98折,让利空间简直是聊胜于无,但像woot这类新型团购网站,折扣最大可以到2、3折,甚至更低,消费者从中获得的利益是不言而喻的。 网站采用PHP/MySQL构建,模板页面别离,采用自主开发的核心框架,对SQL操作进行彻底优化,并使用Memcache对数据查询进行了高效的缓存,足可以满足大访问量、高并发的请求。PHP简介PHP是超级文本预处理语言HypertextPreprocessor的缩写。PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在效劳器端执行的嵌入HTML文档的脚本语言,语言的风格类似于C语言,目前被很多的网站编程人员广泛的运用。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。PHP最初是1994年RasmusLerdorf创立的,在1995年中,PHP2.0发布了。第二版定名为PHP/FI(FormInterpreter)。PHP/FI参加了对MYSQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用PHP/FI;时间到了1997年中,使用PHP/FI的网站数字超过五万个。而在1997年中,开始了第三版的开发方案,开发小组参加了ZeevSuraski及AndiGutmans,而第三版就定名为PHP3。2000年,PHP4.0又问世了,其中增加了许多新的特性。本系统的开发语言使用了PHP5.0.相对于其他脚本语言PHP有以下优点:〔1〕数据库连接PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。还可以自己编写外围的函数取间接存取数据库。通过这样的途径当更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。〔2〕可扩展性PHP已进入了一个高速开展的时期。PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。〔3〕可伸缩性传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进web效劳器(比方mod_perl,JSP)。内嵌的PHP可以具有更高的可伸缩性。〔4〕执行效率高PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在效劳器端执行,充分利用了效劳器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户再一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的表达之一。PHP运行环境介绍Apache是世界使用排名第一的Web效劳器软件。它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAd效劳器,经过屡次修改后,它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和平安性被广泛使用,成为世界上最流行的Web效劳器软件之一。因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理效劳器来使用。AppServ是PHP网页架站工具组合包,可以将网络上免费的架站资源重新包装成单一的安装程序。它提供了简易、快速的PHP运行环境的搭建机制。MySQL数据库简介MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。MySQL的特点:(1)使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性(2)支持多种操作系统(3)为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。(4)支持多线程,充分利用CPU资源(5)优化的SQL查询算法,有效地提高查询速度(6)既能够作为一个单独的应用程序应用在客户端效劳器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名(7).提供用于管理、检查、优化数据库操作的管理工具(8).可以处理拥有上千万条记录的大型数据库与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的缺乏之处,如规模小、功能有限〔MySQLCluster的功能和效率都相比照拟差〕等,但是这丝毫也没有减少它受欢送的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有本钱。运行操作系统无要求,如:Linux/FreeBSD/Unix及Windows2000/2003均可运行环境必须支持PHP5/MYSQL5,PHP必须包括php-mbstring、php-gd模块软件中static/user、static/team、include/compiled、include/configure、include/template可写
第一章利用Visio绘制DFD图顶层数据流图用户〔买家和卖家〕可以凭借自己从网站上申请来的账户密码登陆团购系统,团购系统验证账户输入的账户信息进行审核。账户信息有误那么报错,用户〔买家和卖家〕信息正确那么登入系统进行自己想要的操作。一层数据流图用户〔买家和卖家〕输入自己的账号密码进行登入操作,系统进行对其信息的审核,审核通过登入成功否那么报错。买家登入成功后可以浏览网站上所有的商品,当有满意的物品时可以对其进行下单。买家还可以在线查看自己的账户信息以及自己的订单详情、商品信息以及商品卖家的信息。当买家收到商品后可以对卖家进行评价。卖家登入系统后可以查看自己账户信息,历史工程详情,以及发起新工程等操作。第二层数据流图用户〔买家和卖家〕可以提交自己的资料进行账户申请,申请成功后有账户密码可以进行登入操作。当用户〔买家和卖家〕忘记密码时,可以通过当初申请账号所用的邮箱来找回密码。卖家在线可以新建一个新的团购工程,查看自己以往的工程,修改正在进行的工程以及删除工程。这些一系列操作都会在数据库后台生成一个属于该商家的数据表以便查看。买家登入后可以对中意的商品下订单,然后进行付款购置等操作。买家可以查看自己以往的订单,删除订单等操作。系统会在后台数据库生成买家自己的订单课表和买家消费记录等数据表。买家在收到购置的商品后可以对该买家进行评价。系统在后台数据库生成评价记录表以便用买家进行查看评价、修改评价、删除评价等操作。用户〔买家和卖家〕在登入系统后可以产看关于自己的所有资料,对于某些资料可以进行修改删除等敏感操作。
第二章UML工具的使用1.StarUML简介 概述
StarUML是一款开放源码的UML开发工具,它遵守GNUGPL的一个修订版,它是由韩国公司主导开发出来的产品,可以直接到StarUML网站下载。
StarUML(简称SU),是一种生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML工程宣称的目标是代替大型的商业UML工具软件,如IBM的RationalRose,Borland公司的Together。
特点
●可绘制9款UML图:用例图、类图、序列图、状态图、活动图、通信图、模块图、部署图以及复合结构图等。
●完全免费:StarUML是一套开放源码的软件,不仅免费自由下载,连代码都免费开放。
●多种格式影像文件:可导出JPG、JPEG、BMP、EMF和WMF等格式的影像文件。
●语法检验:StarUML遵守UML的语法规那么,不支持违反语法的动作。
●正反向工程:StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图。反向工程有两个主要用途,其一是旧有的源码反转成图之后,可以构建UML模型的方式继续将新的设计添加上去;另一项用途是想要解析源码时,可以通过反转的类图来理解,不再需要查看一行又一行的代码,这将节省大量的时间和精力。
●支持XMI:StarUML接受XMI1.1、1.2和1.3版的导入导出。XMI是一种以XML为根底的交换格式,用以交换不同开发工具所生成的UML模型。
●导入Rose文件:StarUML可以读取RationalRose生成的文件,让原先Rose的用户可以转而使用免费的StarUML。早期,RationalRose是市场占有率最高的UML开发工具,同时也是相当昂贵的工具。由于RationalRose非常闻名,后来让IBM给收购了。
●支持模式:支持23种GoF模式(Pattern),以及3种EJB模式。GoF模式出自于ErichGamma等4人合著的DesignPatterns:ElementsofReusableObject-OrientedSoftware一书,其内列出了23种软件模式,可解决软件设计上的特定问题。StarUML也支持3种常用的EJB模式,分别为EntityEJB、MessageDrivenEJB、SessionEJB。
StarUML也结合了模式和自动生成代码的功能,方便落实设计。2.图形绘制 2.1用例图 2.2类图 3序列图 2.4状态图 2.5活动图 第三章软件源代码管理subversion(简称svn)是近年来崛起的版本管理软件,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。使用情况虽然在2006年时Subversion的使用族群仍然远少于传统的CVS,但已经有许多开放原码团体决定将CVS转换为Subversion。已经转换使用Subversion的包括了FreeBSD、ApacheSoftwareFoundation、KDE、GNOME、GCC、Python、Samba、Mono以及许多团体。许多开发团队换用Subversion是因为Trac、SourceForge、CollabNet、CodeBeamer等专案协同作业软件以及Eclipse、NetBeans等IDE提供Subversion的支援整合。除此之外,一些自由软件开发的协作网如SourceF除了提供CVS外,现在也提供专案开发者使用Subversion作为原码管理系统,JavaForge、GoogleCode以及BountySource那么以Subversion作为官方的原码管理系统。2009年,绝大多数CVS效劳已经改用SVN。CVS已经停止维护。
第四章使用软件测试工具
NUnitNUnit是在.NET进行TDD的利器.
如果你已经知道很多关于NUnitNUnit还不是很了解的话,我建议你还是阅读一下.本文分为以下局部:1.1TDD的简介首先什么是TDD呢?KentBeck在他的<<测试驱动开发>>(Addison-WesleyProfessional,2003)一书中,使用下面2个原那么来定义TDD:·除非你有一个失败的自动测试,永远不要写一单行代码.·阻止重复我想第一个原那么是显而易见的.在没有失败的自动测试下就不要写代码.因为测试是嵌入在代码必须满足的需求中.如果没有需求,就没有必要实现任何东西.所以这个原那么阻止我们去实现那些没有测试和在解决方案中不需要的功能.第二个原那么说明了在一个程序中,不应该包含重复的代码.如果代码重复,我想这就是不好的软件设计的象征.随着时间的流逝,它会对程序造成不一致的问题,并且使代码变非常混乱,因为我们时常不会记得重复代码的位置.如果发现代码重复,我想我们应该立即删除代码重复.其实这就涉及到重构了.在这里我就不多讲了.一般来说,测试分为2种类型,一是程序员自己的测试,另外一种是客户的测试.关于客户测试,我推荐一个FIT的框架,非常不错。在这里,我们讲的TDD就是程序员测试.那么什么是程序员测试呢?我认为就是我们常说的单元测试.既然是单元测试,在.NET里势必会用到某些工具,目前最著名恐怕就是我即将介绍的NUnit了,1.2NUnit的介绍NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员.最初,它是从JUnit而来.现在的版本是2.2.接下来我所用的都是基于这个版本.NUnitNUnitNUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比方反射,客户属性等等.最重要的一点是它适合于所有.NET语言.NUnit的介绍
Ok,下面正式讲解NUnit.在讲解之前,看看几张图片:
图1
NUnit运行的效果
图2
NUnit运行的另外一个效果
从中我们可以非常容易发现,右边是个状态条,图1是红色的,图2是绿色的.为什么会这样呢?因为如果所有测试案例运行成功,就为绿色,反之如果有一个不成功,那么为红色,但也有黄色的.左面的工作域内那么是我们写的每一个单元测试.通过上面的图片,我想你对NUnit有个总的了解了.接下来还是分为2个局部,一是NUnit的布局,另外一局部就是它的核心概念.首先熟悉一下NUnitGUI的布局.让我们更进一步看一下测试运行器窗口的布局。在右边面板的中间,可以看到测试进度条。进度条的颜色反映了测试执行的状态:绿色描述目前所执行的测试都通过黄色意味某些测试忽略,但是这里没有失败红色表示有失败底部的状态条表示下面的状态:状态.说明了现在运行测试的状态。当所有测试完成时,状态变为Completed.运行测试中,状态是Running:<test-name>(<test-name>是正在运行的测试名称)。TestCases说明加载的程序集中测试案例的总个数。这也是测试树里叶子节点的个数。TestsRun已经完成的测试个数。Failures
到目前为止,所有测试中失败的个数.Time
显示运行测试时间〔以秒计〕File主菜单有以下内容:NewProject允许你创立一个新工程。工程是一个测试程序集的集合。这种机制让你组织多个测试程序集,并把他们作为一个组对待。Open加载一个新的测试程序集,或一个以前保存的NUnit工程文件。Close关闭现在加载的测试程序集或现在加载的NUnit工程。Save保存现在的Nunit工程到一个文件。如果正工作单个程序集,本菜单项允许你创立一个新的NUnit工程,并把它保存在文件里。SaveAs允许你将现有NUnit工程作为一个文件保存。Reload强制重载现有测试程序集或NUnit工程。NUnit-Gui自动监测现加载的测试程序集的变化。当程序集变化时,测试运行器重新加载测试程序集。〔当测试正运行时,现在加载的测试程序集不会重新加载。在测试运行之间测试程序集仅可以重新加载。一个忠告:如果测试程序集依赖另外一个程序集,测试运行器不会观察任何依赖的程序集。对测试运行器来说,强制一个重载使全部依赖的程序集变化可见。RecentFiles
说明5个最近在NUnit中加载的测试程序集或NUnit工程〔这个列表在Windows注册表,由每个用户维护,因此如果你共享你的PC,你仅看到你的测试〕。最近程序集的数量可以使用Options菜单项修改,可以访问Tool主菜单。Exit退出。
View菜单有以下内容:Expand一层层扩展现在树中所选节点Collapse折叠现在树中选择的节点ExpandAll递归扩展树中所选节点后的所有节点CollapseAll递归折叠树中所选节点后的所有节点ExpandFixtures扩展树中所有代表测试fixture的节点。CollapseFixtures折叠树中所有代表测试fixture的节点。Properties显示树中现所选节点的属性。Tools菜单由这些项:SaveResultsasXML作为一XML文件保存运行测试的结果。Options让你定制NUnit的行为。现在看看右边,你已经熟悉Run按钮和进度条。这里还有一个紧跟Run按钮的Stop按钮:点击这个按钮会终止执行正运行的测试。进度条下面是一个文本窗口,在它上方,由以下4个标签:ErrorsandFailures窗口显示失败的测试。在我们的例子里,这个窗口是空。TestsNotRun窗口显示没有得到执行的测试。Console.Error窗口显示运行测试产生的错误消息。这些此消息是应用程序代码使用输出流可以输出的。窗口显示运行测试打印到输出流的文本消息。一些常用属性NUnit里,有以下几种属性:Test
FixtureTest下面我将对每种属性一一讲解.TestFixtureAttribute
本属性标记一个类包含测试,当然setup和teardown方法可有可无.(关于setup和teardown方法在后面介绍)
做为一个测试的类,这个类还有一些限制必须是Public,否那么NUnit看不到它的存在.它必须有一个缺省的构造函数,否那么是NUnit不会构造它.构造函数应该没有任何副作用,因为NUnit在运行时经常会构造这个类屡次,如果要是构造函数要什么副作用的话,那不是乱了.举个例子C#代码using
System;
using
NUnit.Framework;
namespace
MyTest.Tests
{
[TestFixture]
public
class
PriceFixture
{
//
}
}
TestAttribute
Test属性用来标记一个类(已经标记为TestFixture)的某个方法是可以测试的.为了和先前的版本向后兼容,头4个字符(“test”)忽略大小写.(参看:///test.html)这个测试方法可以定义为:
C#代码public
void
MethodName()
从上面可以看出,这个方法没有任何参数,其实测试方法必须没有参数NUnit的界面左边的工作域内,看不到这个方法.还有一点就是这个方法不返回任何参数,并且必须为Public.例如:C#代码using
System;
using
NUnit.Framework;
namespace
MyTest.Tests
{
[TestFixture]
public
class
SuccessTests
{
[Test]
public
void
Test1()
{
/**//*
*/
}
}
}
一般来说,有了上面两个属性,你可以做根本的事情了.另外,我们再对如何进行比拟做一个描述。在NUnit中,用Assert〔断言〕进行比拟,Assert是一个类,它包括以下方法:AreEqual,AreSame,Equals,Fail,Ignore,IsFalse,IsNotNull,具体请参看NUnit的文档。1.3NUnit我将举个例子,一步一步演示如何去使用NUnit.第1步.为测试代码创立一个VisualStudio工程。在MicrosoftVisualStudio.NET中,让我们开始创立一个新的工程。选择VisualC#工程作为工程类型,ClassLibrary作为模板。将工程命名为NUnitQuickStart.图4-1是一个描述本步骤的VisualStudio.NET。
图4-1:创立第一个NUnit工程第2步.增加一个NUnit框架引用在MicrosoftVisualStudio.NET里创立这个例子时,你需要增加一个NUnit引用,如下:在SolutionExplorer右击引用,然后选择增加引用
NUnit.framework组件,在AddReference对话框中按Select和OK按钮。图4-2描述了这步:
图4-2:增加一个NUnit.framework.dll引用到工程第3步.为工程加一个类.为工程加一个NumbersFixture类。这里是这个例子的代码。C#代码using
System;
using
NUnit.Framework;
namespace
NUnitQuickStart
{
[TestFixture]
public
class
NumersFixture
{
[Test]
public
void
AddTwoNumbers()
{
int
a=1;
int
b=2;
int
sum=a+b;
Assert.AreEqual(sum,3);
}
}
}
第4步.建立你的VisualStudio工程,使用NUnit-Gui测试NUnit-gui,加载本本工程编译的程序集.为了在VisualStudio.NET中自动运行NUnit-Gui,你需要建立NUnit-Gui作为你的启动程序:在SolutionExplorer里右击你的NunitQuickStart工程。在弹出菜单中选择属性。在显示的对话框的左面,点击ConfigurationProperties夹选择出现在ConfigurationProperties夹下的Debugging。在属性框右边的StartAction局部,选择下拉框的Program作为DebugMode值。按Apply按钮设置NUnit作为StartApplication。,你既可以键入nunit-gui.exe的全路径,也可使用浏览按钮来指向它。图4-3帮助描述本步骤:
图4-3:将NUnit-Gui作为工程的测试运行器第5步.编译运行测试.
现在编译solution。成功编译后,开始应用程序。NUnit-Gui测试运行器出现。当你第一次开始NUnit-Gui,它翻开时没有测试加载。从File菜单项选择择Oprn,浏览NUnitQuickStart.dll的路径。当你加载了测试的程序集,测试运行器为加载的程序集的测试产生一个可见的表现。在例子中,测试程序集仅有一个测试,测试程序集的结构如图4-4所示:
图4-4:测试程序集的测试在NUnit-Gui中的视图按Run按钮。树的节点变为绿色,而且测试运行器窗口上的进度条变绿,绿色代表成功通过。TestSuite
TestSuite是testcase或其他testsuite的集合.合成(Composite),模式描述了testcase和testsuite之间的关系.
参考来自NUnit的关于Suite的代码SuiteAttributeC#代码namespace
NUnit.Tests
{
using
System;
using
NUnit.Framework;
public
class
AllTests
{
[Suite]
public
static
TestSuite
Suite
{
get
{
TestSuite
suite
=
new
TestSuite("All
Tests");
suite.Add(new
OneTestCase());
suite.Add(new
Assemblies.AssemblyTests());
suite.Add(new
AssertionTest());
return
suite;
}
}
}
}
Category属性
对于测试来说,你有的时候需要将之分类,此属性正好就是用来解决这个问题的。
你可以选择你需要运行的测试类目录,也可以选择除了这些目录之外的测试都可以运行。在命令行环境里/include和/exclude来实现。在GUI环境下,就更简单了,选择左边工作域里的CatagoriesTab,选择Add和Remove既可以了。在上面的例子上做了一些改善,代码如下:C#代码using
System;
using
NUnit.Framework;
namespace
NUnitQuickStart
{
[TestFixture]
public
class
NumersFixture
{
private
int
a;
private
int
b;
[SetUp]
public
void
InitializeOperands()
{
a
=
1;
b
=
2;
}
[Test]
[Category("Numbers")]
public
void
AddTwoNumbers()
{
int
sum=a+b;
Assert.AreEqual(sum,3);
}
[Test]
[Category("Exception")]
[ExpectedException(typeof(DivideByZeroException))]
public
void
DivideByZero()
{
int
zero
=
0;
int
infinity
=
a/zero;
Assert.Fail("Should
have
gotten
an
exception");
}
[Test]
[Ignore("Multiplication
is
ignored")]
[Category("Numbers")]
public
void
MultiplyTwoNumbers()
{
int
product
=
a
*
b;
Assert.AreEqual(2,
product);
}
}
NUnit-GUI界面如图5-2:图5-2:使用Catagories属性的界面Explicit属性本属性忽略一个test和testfixture,直到它们显式的选择执行。如果test和testfixture在执行的过程中被发现,就忽略他们。所以,这样一来进度条显示为黄色,因为有test或testfixture忽略了。
例如:C#代码[Test,Explicit]
[Category("Exception")]
[ExpectedException(typeof(DivideByZeroException))]
public
void
DivideByZero()
{
int
zero
=
0;
int
infinity
=
a/zero;
Assert.Fail("Should
have
gotten
an
exception");
}
为什么会设计成这样呢?原因是Ingore属性忽略了某个test或testfixture,那么他们你再想调用执行是不可能的。那么万一有一天我想调用被忽略的test或testfixture怎么办,就用Explicit属性了。我想这就是其中的原因吧。ExpectedE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中山复工复产安全培训试题及答案
- 百事(中国)校招试题及答案
- 传热学复习题及其答案
- 2026年工作亮点提炼智能化方案
- 2026中国海洋石油集团校招试题及答案
- 2026中国兵器工业集团校招面笔试题及答案
- 聚餐趣味活动方案策划(3篇)
- 国资委活动策划方案(3篇)
- 投票拉票活动方案策划(3篇)
- 质量控制检测流程及报告撰写范本
- 2025年强脉冲光专业知识考试题及答案
- 中建三局安全生产隐患识别口袋书2020版上
- 2026年及未来5年市场数据中国印染设备行业市场调研及投资战略规划报告
- 中证鹏元-中国债券市场统计(2025年度)
- 钢结构厂区安全培训内容课件
- 2026年怀化职业技术学院高职单招职业适应性考试备考试题带答案解析
- DB37∕T 4860-2025 乡村书房建设及服务规范
- 2026年湖南有色金属职业技术学院单招职业技能考试题库带答案详解
- 2025年内蒙古自治区直机关遴选公务员笔试真题汇编含答案解析(夺冠)
- 行政处罚法试卷及答案
- 2026年山东电子职业技术学院单招综合素质考试题库带答案解析
评论
0/150
提交评论