NUnit 快速入门
上一篇 / 下一篇 2007-07-25 22:14:54 / 个人分类:资料
让我们从一个简单的实例开始吧。假设我们正在编写一个空应用程序,并且我们有一个基本的领域类-Account。Account提供了储蓄,取款,以及转帐等操作。Account类可能如下:51Testing软件测试网G[vW3C:fT q
namespace bank { public class Account { private float balance; public void Deposit(float amount) { balance+=amount; } public void Withdraw(float amount) { balance-=amount; } public void TransferFunds(Account destination, float amount) { } public float Balance { get{ return balance;} } } }
现在让我们为此类编写第一个测试-AccountTest。我们即将测试的第一个方法是TransferFunds。
sn%`f(i*ws8?*[K0namespace bank { using NUnit.Framework; [TestFixture] public class AccountTest { [Test] public void TransferFunds() { Account source = new Account(); source.Deposit(200.00F); Account destination = new Account(); destination.Deposit(150.00F); source.TransferFunds(destination, 100.00F); Assert.AreEqual(250.00F, destination.Balance); Assert.AreEqual(100.00F, source.Balance); } } }
我们注意到的第一件事情就是此类包含一个[TestFixture]属性与之关联-这是一种描述类包含测试代码的方法(此属性可以被继承)。此类必须为public,并且对于其超类没有任何限制。此类也必须有个一缺省的构造子。51Testing软件测试网[-Yh }M%Lw1MIA
51Testing软件测试网a(}8y,O[N此类包含一个唯一的方法-TransferFunds,而且有一个[Test]属性与之关联-它标志了该方法是一个测试方法。测试方法必须返回void,并且不能带有参数。在我们的测试方法中,我们对一个需要测试的对象进行了普通的初始化,执行以测试的业务方法,并且检查了业务对象的状态。Assert类定义了一组方法,这些方法用来检查前置条件,在我们的例子里,我们使用AreEqual方法保证在转帐之后,2个帐户都有正确的余额(本方法有许多重载方法,在本示例中的版本有如下参数:第一个参数是一个期望值,第二个参数是实际值)。
+OWRp.`"n C|051Testing软件测试网O j:l0Qzd编译并运行此实例。假设你已经将你的测试代码编译为一个bank.dll。启动NUnit GUI(安装文件会在桌面和“Program Files"上创建一个快捷方式)。在GUI启动之后,选择File->Open菜单,并指向bank.dll所在的路径,在”Open“对话框打开选择该文件。当bank.dll文件加载之后,你 会在左边的面板上看到一个测试树形结构 ,在右边会有一组状态。点击Run按钮,状态条以及测试树的TransferFunds节点会变红-我们的测试失败了。”Error and Failures"面板显示如下信息:
TransferFunds : expected <250> but was <150>
s9d%}/gv'NL&}0而且,栈跟踪面板会报告测试代码中的失败之处:
D }}|hv0at bank.AccountTest.TransferFunds() in C:\nunit\BankSampleTests\AccountTest.cs:line 17
'{J+s"DFiR.T ~0这正是我们期望的:测试失败是因为我们并没有实现TransferFunds方法。现在我们让它工作吧。不要关闭此GUI,返回你的IDE并修复此代码,让你的TransferFunds方法如下:
,tv9E `X0public void TransferFunds(Account destination, float amount) { destination.Deposit(amount); Withdraw(amount); }
现在,重新编译代码,再一次点击GUI上的按钮-状态条以及测试树变绿了。(注意GUI是如何为您重新加载程序集的;我们会一直打开GUI,并在IDE中继续编写代码,写出更多的测试)。