



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.单元测试/china/MSDN/library/archives/library/dncscol/html/csharp03202003.asp一:什么是单元测试,为什么要进行单元测试?编写单元测试是一种验证行为,更是一种设计行为。同样,它更是一种编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功能验证方面的反馈循环。在程序设计过程中会有许多种测试,单元只是其中的一种,单元测试并不能保证程序是完美无缺的,但是在所有的测试中,单元测试是第一个环节,也是最重要的一个环节。单元测试是一种由程序员自行测试的工作。简单点说,单元测试就是测试代码
2、撰写者依据其所设想的方式执行是否产生了预期的结果。二:如何单元测试? NUnit Framework,你唯一需要作的事,是使用正确的Attribute来描述你的test classes及test methods。NUnit提供了许多不同的attributes,让你可以自由的写你想要的unit tests。这些attributes可以用来定义test fixtures(见下一段解释)、test methods,以及setup及teardown的methods(预备及善后工作的methods)。除此之外,还有其它的attributes可以来设定预期发生的exceptions,或者要求Test Ru
3、nner跳过某些test method不执行。三:NUnit Framework的一些常用属性?1. TestFixture attribute主要是用在class上,其作用是标志该class含有需要执行的test methods。2. TestFixtureSetUp 和TestFixtureTearDown这两个主要用在TestFixture里面,其作用是提供一组函数执行任何测试运行之前(TestFixtureSetUP)和最后一个测试执行后(TestFixtureTearDown)。每一个TestFixture只能有一个TestFixtureSetUp方法和TestFixtureTear
4、Down方法。如果一个以上的TestFixtureSetUp和TestFixtureTearDown方法,可以通过编译但是不会执行。注意一个TestFixture可以拥有一个TestFixtureSetUp和一个SetUp,也可以拥有一个TestFixtureTearDown和一个TearDown方法。 TestFixtureSetUp 和 TestFixtureTearDown 被用在不方便使用SetUp和TearDown方法。一般情况使用 SetUp 和TearDown attributes。3. Test attribute主要用来标示在text fixture中的method,表示这个
5、method需要被Test Runner application所执行。有Test attribute的method必须是public的,并且必须return void,也没有任何传入的参数。如果没有符合这些规定,在Test Runner GUI之中是不会列出这个method的,而且在执行Unit Test的时候也不会执行这个method。上面的程序代码示范了使用这个attribute的方法。4. 在执行每一个test method之前(或之后)先作一些预备或善后工作。当然,可以写一个private的method,然后在每一个test method的一开头或最末端呼叫这个特别的method。或
6、者,也可以使用我们要介绍的SetUp及Teardown Attributes来达到相同的目的。一般来说,Setup Attribute及Teardown Attribute被用来预备一些必须的objects(对象),例如database connection、等等。5. 程序在某些特殊的条件下会产生一些特定的exception。要用Unit Test来测试程序是否如预期的产生exception,你可以用一个try.catch的程序区段来catch(捕捉)这个exception,然后再设一个boolean的值来证明exception的确发生了。这个方法固然可行,但是太花费功夫。事实上,你应该使用
7、这个ExpectedException attribute来标示某个method应该产生哪一个exception,当你使用这个attribute的时候,你要明确的指明所预期的exception是哪个type(类型信息)的。6. 标示某个test method,叫Test Runner在执行的时候,略过这个method不要执行。使用Ignore attribute。7. Assert class提供了一系列的static methods,让你可以用来验证主要程序的结果与你所预期的是否一样。四:如何执行你所写的Unit Tests?1. NUnit里面有两个已经写好的Test Runner app
8、lications:一个是窗口GUI程序,一个是console XML(命令列)程序。你可以自由选择你所喜欢的方式,五: 资料 -NUNIT使用说明 一:软件及安装免费,开源的单元测试软件。安装只要运行安装程序,按所有缺省设置即可。NUNIT:NUNIT ADDIN :/projects/nunitaddin/二:DLL的测试1:新建一个Class Library PROJECT,2:加入待测试DLL的引用,3:加入NUnit.Framework.dll的引用4:在文件开头加入:using NUnit.Framework5:在
9、待测试的类前加入:TestFixture6:在待测试的方法前加入:Test7:启动NUNIT-GUI,新建项目,将新建的Class Library PROJECT加入,执行。三:Attribute简介1:TestFixture:每个待测试的类前必须加该Attribute。【注意】待测试类需要有一个public的default constructor(或者是没有定义任何的constructor)2:Test:每个测试的类中待测试的函数前必须加该Attribute。【注意】有Test attribute的method必须是public的,并且必须return void,也没有任何传入的参数。如果没
10、有符合这些规定,在Test Runner GUI之中是不会列出这个method的,而且在执行Unit Test的时候也不会执行这个method。3:TestFixtureSetUp 和TestFixtureTearDown简介这两个主要用在TestFixture里面,其作用是提供一组函数执行任何测试运行之前(TestFixtureSetUP)和最后一个测试执行后(TestFixtureTearDown)。每一个TestFixture只能有一个TestFixtureSetUp方法和TestFixtureTearDown方法。如果一个以上的TestFixtureSetUp和TestFixtureT
11、earDown方法,可以通过编译但是不会执行。注意一个TestFixture可以拥有一个TestFixtureSetUp和一个SetUp,也可以拥有一个TestFixtureTearDown和一个TearDown方法。TestFixtureSetUp 和 TestFixtureTearDown 被用在不方便使用SetUp和TearDown方法。 一般情况使用 SetUp 和TearDown attributes。4:SetUp 和 Teardown Attributes简介 在写Unit Tests的时候,有时你会需要在执行每一个test method之前(或之后)先作一些预备或善后工作。当然
12、,你可以写一个private的method,然后在每一个test method的一开头或最末端呼叫这个特别的method。或者,你可以使用我们要介绍的SetUp及Teardown Attributes来达到相同的目的。如同这两个Attributes的名字的意思,有Setup Attribute的method会在该TextFixture中的每一个test method被执行之前先被Test Runner所执行,而有Teardown Attribute的method则会在每一个test method被执行之后被Test Runner所执行。一般来说,Setup Attribute及Teardown
13、 Attribute被用来预备一些必须的objects(对象),例如database connection、等等。5:Attribute说明TestFixture:每个待测试的类前必须加该Attribute。Test:每个测试的类中待测试的函数前必须加该Attribute。TestFixtureSetUp:在一个测试类中只执行一次,且在所有测试案例运行前执行SetUp:在每个测试案例运行前执行ADD:测试案例1TearDown:在每个测试案例运行后执行SetUp:在每个测试案例运行前执行Sub:测试案例2TearDown:在每个测试案例运行后执行TestFixtureTearDown:在一个测
14、试类中只执行一次,且在所有测试案例运行后执行ExpectedException:检测抛出异常TestExpectedException(typeof(InvalidOperationException)Test,ExpectedException(typeof(InvalidOperationException)Ignore :临时忽略一些测试Ignore(“Not ready to test this yet”); 四:NUNIT的各种断言 断言用于帮助你确定某个被测试函数是否工作正常,通常一个测试方法中会有多个断言,当一个断言失败时,该测试方法就会终止。可使用Assert或Assertio
15、n调用断言函数。1:AreEquals(expected,actual,string message) Expected是被测试代码的期望值,actual是被测试代码的实际值,message是一个可选的消息,在二个值不一致时报告错误。Expected和actual可以是一个对象。 对于浮点数的比较,使用AreEquals(expected,actual,tolerance,string message),其中,tolerance表示精度,0.01表示仅比较小数后二位。2:IsNull/IsNotNull(object,string message) 判断一个对象是空/非空。3:AreSame(expected,actual,string message) 判断Expected和actual是否是同一个对象。4:IsTrue(bool condition,string message)/IsFalse 判断条件是否为真/假。5:Fail(string message) 使测试立即失效。五:异常处理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省重点高中沈阳市郊联体2024-2025学年高二下学期4月月考政治试题(原卷版+解析版)
- 二零二五资产抵押担保合同
- 顺德区前期物业服务合同
- 激波管实验室的主要设备及特点,主要风险及安全注意事项
- 合伙分配协议
- 离婚后同居协议合同书范例
- 三方商铺租赁合同书范例
- 二零二五加盟店合作合同书范例
- 来宾酒厂独家经销商合作协议书
- DB37∕T 4169-2020 大樱桃避雨防霜栽培技术规程
- 2024版肿瘤患者静脉血栓防治指南解读 课件
- 煤炭工业露天矿设计规范(WORD格式)
- 8251芯片(课堂PPT)
- 人教版中考英语高频词汇汇总
- DriveMonitor使用简介
- 苏州市优质结构评选办法
- EXCEL个人所得税及年终奖金个人所得税计算表(含函数公式)
- 绿色装配式建筑现场安全文明管理办法及执行标准(共36页)
- 井下主排水泵联合试运转 安全技术措施
- (完整版)表2.0.2逆变器本体安装.doc
- 社会适应量表
评论
0/150
提交评论