您现在的位置: 中国IT实验室 >> 软件测试 >> 测试技术 >> 文章正文
使用NUnit在.Net编程中进行单元测试
来源:中国IT实验室整理 时间:2007-4-29 作者:佚名

    引言:

    举一个可能会发生在你身边的事件将更能贴近实际,幸好我们现在就有一件在程序员看来非常普通的任务:

    你今天第一天上班,你的项目经理拿给你一叠不算厚的文档,告诉你今天的任务是按照文档中的要求编写一个。Net类,可能因为任务并不复杂,所以他看上去非常的随意。

    今天能否很好的完成任务对你来说非常特殊,你拿过来后快速略过了前面大段的项目介绍,因为你知道那些对你并不重要,印象中好象是一个关于售票系统的工程。很快,你找了你需要关注的重点:类的需求说明文档。你详细的看了一遍,感觉并不复杂,类名Ticket,有一个只读的int型公共的属性,名称是Amount,还有两个方法,一个是名称是Sell,功能是将Amount减去一,表示卖掉了一张票,当然,票可不能为负数,如果是的话,抛出一个异常说明原因。另一个是Add,它有一个int型的参数,功能是将这个参数的值加到Amount中去,可能是表示进票之类的事情吧,你不太关心,反正这个程序很简单,你掩饰住内心的狂喜,打开电脑,调出编辑器,开始准备写程序了。

    "喂,等等",项目经理不知道什么时候又转回来了,"我想知道你打算怎么进行单元测试,我最关心的是这个".

    "什么是单元测试?"你转过头一脸沮丧的看着失望的项目经理。

    什么是单元测试:

    在程序设计过程中会有许多种测试,单元只是其中的一种,单元测试并不能保证程序是完美无缺的,但是在所有的测试中,单元测试是第一个环节,也是最重要的一个环节。单元测试是一种由程序员自行测试的工作。简单点说,单元测试就是测试代码撰写者依据其所设想的方式执行是否产生了预期的结果。关于单元测试的重要性已经有许多文章做了很多深入的分析,这里就不再赘述。

    NUnit是一个为Net准备的自动化单元测试框架,它的作用就是帮助你方便的完成单元测试工作,同鼎鼎有名的JUnit一样,都是xUnit家族的成员。它的下载地址是:http://www.nunit.org.

    测试先行:

    "什么?先写测试?"你一定非常惊讶,对!就是先来编写测试代码,按照极限编程(XP)的理论,写测试就是对软件进行设计的过程,它的重要性甚至超过了实际完成功能的代码。先将测试写完,然后再来完成代码,这样,所有的测试通过之日也就是程序完成之时。

    首先,我们将NUnit提供的要nunit.framework.dll文件引入到工程中,并创建一个名为TicketTest的类:

    [TestFixture]public class TicketTest{[Test]public void Add(){Ticket ticket = new Ticket();ticket.Add(100);Assertion.AssertEquals(100, ticket.Amount);}}注意,其中的[TestFixture]和[Test]两个Attribute为NUnit所规定必须要添加的,这样,测试框架就可以知道哪些类或者方法需要进行测试。

    我们在Add方法中定义了一个ticket对象,并给他加了100张票,然后就可以使用:

    Assertion.AssertEquals(100, ticket.Amount);

    来测试ticket的Amount属性是否确实为100.

    接下来,我们再向TicketTest中添加一个测试Sell的方法:

    [Test]public void Sell(){Ticket ticket = new Ticket();ticket.Add(100);ticket.Sell();ticket.Sell();ticket.Sell();Assertion.AssertEquals(97, ticket.Amount);}这里,我们先加了100张票之后就一口气卖掉了3张,然后看看我们是否还剩下97张票。

    好了,这两个方法的测试已经做完了,我们来看一下测试的结果,根据要求,我们写了如下代码:

    public class Ticket{private int amount;public int Amount{get{return amount;}}public void Add(int num){}public void Sell(){}}注意这段代码只是为了完成类的结构,方法的实现暂时先空着。然后将这段代码编译成一个dll动态连接库文件:UnitTest.dll.

    我们运行NUnit的图形测试工具,打开我们编译好的dll文件,点"Run"按纽,就可以看到如下画面:

    很醒目红色,表示测试并没有成功,不过这个是在我们的预料之中的。

    接下来,我们向刚才的Ticket类中完成我们的Add方法实现代码:

    public void Add(int num)

    {

    amount += num;

    }

    保存,重新编译。

    切换到NUnit,再点Run,可以看到:

Add方法已经变成绿色了,再接着将Sell方法也完成:

public void Sell()

{

amount -= 1;

}

[1] [2] 下一页  



相关文章
在VB中用DAO实现数据库编程
在.NET环境中使用单元测试工具Nunit
推荐文章


测试技术 测试工具 测试管理 测试质量
·TestNG使Java单元测试轻而易举04-29
·C语言单元测试框架-Check04-29
·自动进行团队构建和单元测试过程04-29
·java的单元自动化测试---jtest04-29
·使用NUnit在.Net编程中进行单元测试04-29
·防御性编码和单元测试“交通规则”04-29
·数据库程序的单元测试04-29
·单元测试的基本方法04-29
·为什么要进行单元测试?04-28
·单元测试和事先测试开发04-28
·单元测试------理论篇04-28
·强大的Web开源测试工具—Selenium04-19
·测试工具:Pure Software vs Appliance04-12
·开源Web自动化测试框架——Watir试用手记04-12
·Java开源测试工具汇总04-12
·开源测试工具的完整解决方案04-12
·Logiscope测试机理04-12
·测试工具的选择04-12
·testview测试工具详介04-12
·用webload进行web application性能测试04-12
·Optimizeit Thread Debugger概览04-12
·开放源代码的软件测试工具04-12
·从CMM角度考虑需求管理计划04-17
·软件测试实践之测试环境的规划与管理04-12
·缺陷漏测分析:测试过程改进04-12
·软件测试的组织与管理04-12
·T-Plan 测试过程管理工具技术摘要04-12
·软件测试过程的监控方法04-12
·成功测试管理的九大原则04-12
·谈项目管理和软件测试过程04-12
·如何制定软件项目测试计划04-12
·软件测试需要一个怎样的过程?04-12
·软件测试应遵循的八条原则04-12
·CMMI混合型表达方式04-18
·以技术采用工具推进CMMI实施04-18
·CMMI-2级必需的和期望的模型要素04-18
·CMM/CMMI/SPCA业务介绍04-18
·过程“奥林匹克”——CMM的目的04-17
·软件市场的通行证——CMM04-17
·软件企业如何有效地推行CMM04-17
·CMM是解决软件出口壁垒的有效途径04-17
·CMM培训需要特别注意两大问题04-17
·源自美国的安全模型SSE-CMM04-17
·CMM软件过程改进—软件企业的BPR04-17
  培训中心
  ITLab技术交流平台: