NUnit是一个专门针对于.NET的单元测试框架,适用于所有.Net语言的单元测试;它是完全用C#进行设计开发的,充分体现了.Net语言的特点,例如自定义属性和反射等。祖籍,Xunit,远房表亲:Junit(Java的单元测试框架)和CPPUnit(C++单元测试框架)。
下载地址:http://www.nunit.org/index.php?p=download
Windows用户直接下载winNUnit-2.6.4.msi,一直下一步即安装完成。
Nunit的使用笔者以一个VS demo为例说明。
1、首先在VS中引用Nunit.framework
2、使用VS编写被测demo
新建项目Bank——>添加Account类编写Account类的存钱Deposit、取钱Withdraw、转账TransferFunds三个方法
3、在VS中新建一个Bank测试类,编写测试用例,分别对三个方法进行测试
(以【TransferFunds】为例)针对【TransferFunds】方法编写测试代码如下:
4、使用Nunit进行测试:
1、双击打开Nunit——>加载文件,点击file——>Open Project——>找到被测类的dll,加载 (详见下图)
加载成功的Bank,【AccountTest】类下写了两个测试方法,如图:
分别对【TransferFunds】、【TransferWithInsufficientFunds】进行测试。(笔者上面展示的代码仅有TransferFunds方法,故本文默认以该方法为例进行描述)
2、选中需要测试的方法,点击【Run】进行测试:
绿色——>测试通过:
红色——>测试未通过,并显示测试未通过原因和错误代码行数。
被测试的【TransferFunds】方法,预计输出【250】,但实际为【150】,AreEquel方法两个参数值不等。这就是未通过的原因。
3、找到出错处代码(【TransferFunds】方法错误),修改:
4、返回Nunit界面,点击【Run】,测试通过:
NUnit的很多功能都是通过属性来提供的。属性是.NET语言中一个很重要的特性,这也是Nunit使用C#编写沿承.Net语言的一大传统。从代码上看,属性就是一个加在元素前面的中括号标识。如代码中的【TestFixture】和【Test】。
在测试类中,我们用TestFixture属性来标记一个类包含测试,申明该类是用来测试的。一般用在class的定义之前;Test一般是放在方法之前,表示对该方法的测试。
Nunit中对单元测试做出极大贡献的就是Assert断言。这个类具有诸多方法,用来验证程序实际输出结果与预期结果的对比。例如代码中的AreEqual方法的的用途就是判断预期结果和实际输出是否相等。也就是说该转账方法【TransferFunds】,预期输出应为【250】,实际输出是通过【Balance】属性确定的。如果【Balance】等于250,则该测试通过。