这个类很简单,编译通过,运行,一切ok。
3)在同一个项目中,增加一个用来测试 Account 类中的方法的测试类(里面的几个Attribute是关键的)
using NUnit.Framework; // 千万别忘了这一行
[TestFixture] // 这个Attribute说明 AccountTest 类中包含有测试
public class AccountTest
{
[Test] // 这个Attribute说明了 TestTransferFunds() 方法是用来做测试的
// 一般测试方法的名字是在被测试方法名前加上Test
public void TestTransferFunds()
{
// 准备工作
Account source = new Account();
source.Deposit(200.00F);
Account destination = new Account();
destination.Deposit(150.00F);
source.TransferFunds(destination, 100.00F); // 转账
// 利用 Nunit.Framework 中的 Assert 类看看转账以后两个账户的余额是否正确
Assert.AreEqual(250.00F, destination.Balance);
Assert.AreEqual(100.00F, source.Balance);
}
}
然后编译一下,生成一个 exe 文件(如果要生成 DLL 的话,更改一下这个这个项目的 Output Type属性,改成 Class Library可以了。这个改动还是在Solution Explorer 窗口中,项目名上 右键--属性。 对于这个例子,生成DLL的话不需要 Main() 方法了)。
4)打开NUnit,File--Open,找到刚才编译生成的 exe。然后 Run,满眼可爱的绿色,说明测试都成功了^_^。
如果想看看测试失败的样子,可以把 Assert.AreEqual() 里面的值改一下……
例子中只用到了 Test Fixture 和 Test 这两个Attribute,其他更多的用法在 NUnit 文档中写得十分清楚,文档中也有些更好的例子……
自动化的单元测试有什么用? 答:省时省力。当一个系统需要测试的类/方法 成千上万时,手工的测试方法(用控制台打印出信息等等)的效率会比较低。
总结:NUnit 很好的利用了反射机制,单元测试十分方便。但是对于复杂的对象,写出低耦合的测试代码可能有一定难度