付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VisualStudio2010单元测试之一-普通单元测试分类:VisualStudio2010单元测试2011-02-0911:5039590人阅读评论(46)收藏举报本文以VisualStudio2010为例,来介绍如何在VisualStudio里面进行单元测试.首先来介绍普通单元测试,这是进行顺序测试、压力测试的基础。如果在VisualStudio2010(2008)里面没有发现下图中的Test菜单,请用VisualStudio安装光盘进行安装,因为VisualStudio单元测试插件安装时可能不是默认选项。T白非Ah5lyseWiridowHelpNewTest.卜LoadMetada
2、taFile.1./CreateNewTestList.Runk"Debug一制ManageTestContrallcrs.,卜SetectActive1estSettingsEditTestSet曲中k测试之前,我们要准备一些测试代码或者从下面的链接下载完整的项目工程新建一个名为AppSample的Lib。里面有一个MathUtility文件,包含加减乘除四个方法。代码如下:namespaceTJVictor.UT.AppSamplepublicclassMathUtilitypublicMathUtility()publicstaticintAdd(inta,intb)retur
3、na+b;publicstaticintMinus(inta,intb)(returna-b;)publicstaticintDivide(inta,intb)(returna/b;)publicstaticintMultiply(inta,intb)(returna*b;)创建单元测试项目有两种方法:1.直接创建单元测试项目:File->New->Project->TestProject.如下图:*.OHhf:JNETFfEEttk.lypr:Te土口or"加筝七t'O佬世处D?cu*enHNpWPfTO|PEtilrHTtn把事旧-y5u=lcjruil
4、rdo耽eb力OffceChudAepoitrsy*人丹fPni叱yvighfrTearWQF'W口目3*J'LthElL=TlQUaQEt5+CthETPtC)9Z:l>PBE制皖tW白片kodtineMf&'ws-l丁川:即他山Nrnw!陵t的CiMHLtlon口roiKttMcontgrstes分回Cr*卅l。尸csTtriYhvy口ddtonoy匚廿canrtrd:sLiiohnpf2,直接在需要创建单元测试的函数上创建:右击函数名->CreateUnitTests。如下图CrsaleUnitTesU?|国jrrcnfcs5lcrtign;日
5、即,Qixpixproisct;:jurprjje-t争irinqqF.Adri小福用Hy.,二”OKIEfI这样就创建好了单元测试项目。VisualStudio会自动生成一个单元测试工程。推荐使用第二种方法创建,因为第一种方法创建的只有单元测试工程,第二种方法会把单元测试函数也一起创建了出来。本文以第二种创建的方式为例,继续下一步,讲解单元测试文件。创建好的单元测试工程如下图:-.岁UTProject士:出1Pnoperties-References口Microsoft.CSharpMih.VtsualStudi*,QualityT-OSystemOSystenn.Core口SystemDa
6、t15yste(n.Dat.Data5etExtenslorSystBiri.XnnI口5y5tunrinnLLinq口TJVictor.UTppSamplee©MathUtilityTeet.K其中MathUtilityTest.es就是自动生成的单元测试文件,打开可以看到类似如下代码。publie(TestMethod()voidAddTest()inta=0;/TODO:Initializetoanappropriatevalueintb=0;/TODO:Initializetoanappropriatevalueintexpected=0;/TODO:Initializeto
7、anappropriatevalueintactual;actual=MathUtility.Add(a,b);Assert.AreEqual(expeeted,actual);Assert.Ineonelusive("Verifythecorrectnessofthistestmethod.");关于单元测试的各种断言,不在本文讨论范围之内。下表列出VisualStudio2010支持的断言及相关解释。断言解释AreEqual验证值相等AreNotEqual验证值不相等AreSame验证引用相等AreNotSame验证引用不相等nconclusive暗示条件还未被验证Is
8、True验证条件为真IsFalse验证条件为假sInstanceOfType验证实例匹配类型sNotInstanceOfType验证实例不匹配类型IsNotNull验证条件为NULLIsNullFail验证条件不为NULL验证失败测试函数AddTest()的属性TestMethod()表示这个方法是个可运行单元测试方法,区别类中的其他方法(如一些测试辅助方法)。需要特另注意的是:Assert.Inconclusive("Verifythecorrectnessofthistestmethod.");语句是默认添加的,意思是这个方法是VisualStudio自动创建,运行前自
9、删除或注释此句,否则运行结果无法通过。按上面的步骤,把MathUtility里面的所有方法都建立相应的单元测试,然后按F6进行编译。编译后,就可以在单元测试窗口中看到我们刚刚建立的测试方法了。Test->Windows->TestListEditor如下图:WWMJ川'Tmst.息nathUtiltceStartFaceCdunn"»|TypekayworOi;IteMs)decked:1L15占4Ies:£IcsLsNctinaListAllLeafed-ests®a词口朝匚LT幻上ListFuhHomTestMr时ProjectA
10、ddledtUTRopedtDiiyidaT«tLR卬口|E*dtsrihLisresituiRoiectMuitipK-TestLITFrorect修改DivideTest代码如下:TestMethod()public(voidDivideTest()inta=100;/TODO:Initializetoanappropriatevaluevalueintintb=2;/TODO:Initializetoanappropriatevalueexpected=50;/TODO:Initializetoanappropriateintactual;actual=MathUtility.
11、Divide(a,b);Assert.AreEqual(expected,actual);/Assert.Inconclusive("Verifythecorrectnessofthistestmethod.");在TestListEditor选中DivideTest方法后,右击如下图at>RunCheckedTestsDebugCheckedTestsOpenTest9flewTestList,.DisableXR-emtivieFromTestLi5tRemoveFromAHTestListsACutOtrM-XCopyCtrl*匚PasteCtrl+7Xdele
12、te&elSelectAllCtrl+A如AddfRemcveColumns,PropertiesV_JdI.RunCheckedTests:直接运行此单元测试函数2.DebugCheckedTests:以Debug模式运行。在此模式下运行单元测试函数,可以在单元测试函数(DivideTest)或是被测函数(MathUtility.Divide)中加断点,则程序会自动停留在断点处。3.OpenTest:打开此测试函数的方法,相当于双击。4.Disable:把此测试方法置为无效。左击RunCheckedTests后,运行结果如下图,证明测试通过:Te5tR&sii匕1隹Rurt*
13、洒Debug'Iz与:|&|%,gg)TJMCTQRaU,Og<il10:-T区七Funtnm口也M川Ki1八口加笠d:Item(s)checked:ke5ult目。PassedTestNameDivideTestProjectUTfrojectErrorMessage重新修改DivideTest()程序如下:TestMethod()publicvoidDivideTest()(inta=100;/TODO:Initializetoanappropriatevalueintb=2;/TODO:Initializetoanappropriatevalueintexpecte
14、d=60;/TODO:Initializetoanappropriatevalueintactual;actual=MathUtility.Divide(a,b);Assert.AreEqual(expected,actual);/Assert.Inconclusive("Verifythecorrectnessofthistestmethod.");再次运行,结果如下:TestResults工三|必|呢皿/TMICrCRRLLMW20::二|屈)Debug-JJ/'y.七可|GroupBy:.Q5陪怙d除汩I田81P35雷&Item(s)checked:1
15、ResultTestUameProjectErrorMe笈置已,5。FailedDivideTestUTProjecttoert.AreEquaifailed.Expevted:<50>,Actud;<50>.测试失败,原因是:期待值为60,实际值为50,断言失败。重新修改DivideTest()程序如下:public(voidDivideTest()inta=100;/TODO:Initializetoanappropriatevalueintb=0;/TODO:Initializetoanappropriatevalueintexpected=60;/TODO:In
16、itializetoanappropriatevalueintactual;actual=MathUtility.Divide(a,b);Assert.AreEqual(expected,actual);/Assert.Inconclusive("Verifythecorrectnessofthistestmethod.");这次以Debug模式运行,则程序会在returna/b;抛出异常,显示被除数不能为0.至此,一个简单的单元测试已经从头到尾跑了一遍。细心的读者一定会发现在MathUtilityTest.cs测试文件里面还有四个被注释掉的方法,下表列出了这四个方法的解释
17、和用法。函数名用法ClassInitialize()MyClassInitialize这个方法会在每次调用测试方法前被自动调用。假设在调用AddTest(),DivideTest()等方法之前都需要初始化一些基本数据列表,则这个工作可以放在MyClassInitialize函数里面,不用分别与在每个测试方法里。ClassCleanup()MyClassCleanup这个方法会在每次调用测试方法结束后被自动调用。TestInitialize()MyTestInitialize这个方法会在每次启动一个测试过程前被自动调用。例如本次测试一共选择了AddTest(),DivideTest()两个测试方
18、法,则在调用这两个方法前,MyTestInitialize会先被调用。与MyClassInitialize/、同的是,MyClassInitialize是每次调用测试方法时都会被调用,相当于函数级的调用,MyTestInitialize则只在测试过程前会被调用一次,在测试过程结束前,不会再被调用,相当于过程级的调用。TestCleanup()MyTestCleanup这个方法会在每次结束一个测试过程后被自动调用。VisualStudio之所谓把这四个函数注释掉,原因是这四个函数只是示意性函数(从名字中就可以看出)o关键是看这四个函数的方法属性ClassInitialize(),ClassCle
19、anup(),TestInitialize(),TestCleanup()只要把相关的属性加到相关的方法上,那么这个方法就具有的上面所描述的功能。单元测试适用范围:1 .验证函数正确性。对于一个函数,只要我们把相关的测试数据都写全,然后run一下,就知道是否都能通过。以后修改此方法后,只要再次run一下,就知道此次修改是否影响到了以前的测试用例,大大节省时间和提高正确率。2 .Debug程序。我们一般写后台代码时,都要写一个console或是winform小程序要调试验证所写的类是否能run起来,那么单元测试中的Debug模式就可以胜任此工作。下面介绍两个使用时的小技巧。1 .可以在TestResult窗口里面导出测试结果。导出的结果包括一份测试报告和测试程序。证明此程序已经通过了报告中的所有测试用例,相当于Release了一个版本。2 .设置测试数量。每运行一次测试过程,就会生成一次测试报告和程序。VisualStudio默认次数是25,即超过25后,就会提示超出测试数次。我们可以通过下面的设置来提高次数。Tool->Options->TestTools->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学试题(管理类)-招聘管理历年参考题库含答案解析
- 2026年安徽国际商务职业学院高职单招笔试综合素质历年参考题库含答案解析
- 2026年大学试题(理学)-材料科学历年参考题库含答案解析
- 2026年娄底职业技术学院高职单招笔试职业适应性测验历年参考题库含答案解析
- 2026年太原幼儿师范高等专科学校高职单招笔试数学历年参考题库含答案解析
- 2026年天津石油职业技术学院高职单招笔试职业技能测验历年参考题库含答案解析
- 糖尿病饮食治疗宣教版培训课件
- 新飞-营销管理体系诊断和初步建议
- 2026年重庆市大足县教师招聘之中学教师招聘考试题库及参考答案
- 抖音电商:2026年抖音商城双11一站式报名指南
- 护理工作中24小时出入量的精准记录与管理
- JG/T 100-1999塔式起重机操作使用规程
- 形势与政策(吉林大学)知到智慧树章节测试课后答案2024年秋吉林大学
- 疼痛管理制度与规范
- 2024秋期国家开放大学专科《液压与气压传动》一平台在线形考(形考任务+实验报告)试题及答案
- 中国投资人邮箱大全
- 19R505-19G540室外管道钢结构架空综合管廊敷设
- GB/T 45003-2024职业健康安全管理工作中的心理健康安全:管理社会心理风险指南
- 医疗实习生实习合同书
- 设计院经营管理制度
- 8过渡金属配合物催化剂及其催化作用课件
评论
0/150
提交评论