下面,是照着NUnit的帮助文档做的例子,原文在这里http://www.nunit.org/index.php?p=quickStart&r=2.6.4
我们假设一个简单的银行账户管理功能,等会我会在下面给出本例子的所有源代码,这里只要看个意思就行

1 using System; 2 3 namespace Bank 4 { 5 public class Account 6 { 7 private decimal balance; 8 private decimal minimumBalance = 10m; 9 10 /// <summary> 11 /// 存款 12 /// </summary> 13 /// <param name="amount"></param> 14 public void Deposit(decimal amount) 15 { 16 balance += amount; 17 } 18 19 /// <summary> 20 /// 取款 21 /// </summary> 22 /// <param name="amount"></param> 23 public void Withdraw(decimal amount) 24 { 25 balance -= amount; 26 } 27 28 /// <summary> 29 /// 转账 30 /// </summary> 31 /// <param name="destination"></param> 32 /// <param name="amount"></param> 33 public void TransferFunds(Account destination, decimal amount) 34 { 35 36 } 37 38 public decimal Balance 39 { 40 get { return balance; } 41 } 42 } 43 }
这是一个银行转账系统,除了存钱和取钱之外,有一个空函数public void TransferFunds(Account destination, decimal amount)
这个函数由于我们马虎,里面的内容忘了实现,现在如果外部要调用这个函数,最终的结果肯定是错的。
那么我们下面来演示一下如果使用NUnit来对这个类进行测试
1.引用nuit.framework.dll(这个dll就在我们安装NUnit文件夹的Bin目录下)
2.新建一个类AccountTest

1 using NUnit.Framework; 2 3 namespace Bank 4 { 5 [TestFixture] 6 public class AccountTest 7 { 8 [Test] 9 public void TransferFunds() 10 { 11 Account source = new Account(); 12 source.Deposit(200m); 13 14 Account destination = new Account(); 15 destination.Deposit(150m); 16 17 source.TransferFunds(destination, 100m); 18 19 Assert.AreEqual(250m,destination.Balance); 20 Assert.AreEqual(100m,source.Balance); 21 } 22 } 23 }
3.重新编译整个项目
4.在NUnit文件夹下打开nunit.exe
5.在File->Open Project中打开你编译通过的dll也好,exe也好,我是做了一个exe
6.打开之后界面如下,点击Run,可以看到,报错了,错误信息显示,Bank.AccountTest.TransferFunds这个函数有错误,预期的值是250,结果却是150
7.重新打开VS,修改TransferFunds函数

/// <summary> /// 转账 /// </summary> /// <param name="destination"></param> /// <param name="amount"></param> public void TransferFunds(Account destination, decimal amount) { destination.Deposit(amount); Withdraw(amount); }
8.修改之后重新编译项目,然后再回到NUnit界面,不用再Open或者Reload,直接Run就可以,可以发现整个项目通过测试,O(∩_∩)O
9.NUnit就这样搭建好了,项目下载地址 点我下载