- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用NUnit在.Net编程中进行单元测试
引言:
在程序设计过程中会有许多种测试,单元只是其中的一种,单元测试并不能保证程序是完美无缺的,但是在所有的测试中,单元测试是第一个环节,也是最重要的一个环节。单元测试是一种由程序员自行测试的工作。简单点说,单元测试就是测试代码撰写者依据其所设想的方式执行是否产生了预期的结果。关于单元测试的重要性已经有许多文章做了很多深入的分析,这里就不再赘述。
NUnit是一个为Net准备的自动化单元测试框架,它的作用就是帮助你方便的完成单元测试工作,同鼎鼎有名的JUnit一样,都是xUnit家族的成员。它的下载地址是:。
首先,我们将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;
}
再来测试,结果就变成:
啊,总算变成美丽的绿色了,大家现在体会到环保的重要性了吧。 :)
那么可以交任务了吗?等等,别急,还有个异常没测试呢,如果我们的Amount小于0的话,就会产生异常,那么,异常怎么测试呢?请接着看。
测试异常:
还是跟上面一样,先写出测试代码:
[Test]
[ExpectedException(typeof(Exception))]
public void ExcpetionTesting()
{
Ticket ticket = new Ticket();
ticket.Add(3);
ticket.Sell();
ticket.Sell();
ticket.Sell();
ticket.Sell();
}
其中,[ExpectedException(typeof(Exception))]表示我们希望能捕获到发生的异常,如果没有捕获到异常,则表示测试失败。
后面的代码很好理解,我们加了三张票,却卖了四张出去,这可不是炒股,以后没办法平仓的。 :)
编译运行,我们看到以下的测试画面:
您可能关注的文档
- MODBUS 规约中文说明书.doc
- modbus 通讯协议 实例.doc
- Modbus 通讯协议编程.doc
- Modbus 协议简介及编程.doc
- Modbus_协议简介及编程.doc
- MODBUS-RTU通讯的简要介绍.doc
- MODBUS通信协议应用(水厂).doc
- Modbus通讯协议1.2.doc
- Modbus通讯协议说明.doc
- Module 12 单元测试题.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)