好学IT学院:IT信息技术分享交流平台
标签:.NET  来源:互联网  作者:lover_P  发布时间:2007-03-02  ★★★加入收藏〗〖手机版
摘要:纵观软件的开发,测试已经日益成为软件开发过程中的重要环节,通常一个软件的开发周期中测试要占到一半时间甚至更多。而在测试过程中,单元测试更是万里长征第一步,单元测试进行得是否完善,直接影响到后期集成测试的效率。进行单元测试,有许多软件可以自动完成,NUnit就是…

[译者序]

 纵观软件的开发,测试已经日益成为软件开发过程中的重要环节,通常一个软件的开发周期中测试要占到一半时间甚至更多。而在测试过程中,单元测试更是万里长征第一步,单元测试进行得是否完善,直接影响到后期集成测试的效率。进行单元测试,有许多软件可以自动完成,NUnit就是其中之一。这是一款与JUnit齐名的,同属于xUnit家族的单元测试软件(在http://www.NUnit.org我们可以免费得到这款软件)。

[正文]

让我们从一个简单的例子开始。假设我们正在编写一个银行应用程序,而我们有一个这一领域的基本类——Account。Account支持存款、取款和资金转帐。这个Account类看起来会是这个样子:

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。

namespace 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]特性(attribute)——这表示这个类包含了测试代码(这个特性可以被继承)。这个类必须是公有的,但他的父类并不受限制。这个类还必须有一个默认构造函数。

类中唯一的一个方法——TransferFunds(),关联了一个[Test]特性——这表示它是一个测试方法。测试方法的返回值必须为void并且不能带有参数。在我们的测试方法中,我们对被测试的对象进行了一般的初始化,执行了被测试的方法并检查了对象的状态。Assert类定义了一组方法用于检查给定的条件,在我们的例子中我们使用了AreEqual()方法来确保交易过后两个账户都有正确的余额(这个方法有很多重载,我们在这个例子中使用的版本带有两个参数:第一个参数是我们的期望值,第二个参数是实际值)。

利用 C# 实现任务栏通知窗口
  想必大部分网友都使用过QQ、MSN等聊天程序,它们的界面都相当华丽,尤其是当网友上线以及消息提示时会有一个浮动的窗体从屏幕的右下方…
  • 好学触屏公众号虎力全开、杨帆起航!
  • 四大名著全套小学生版注音版
  • 诗词中的科学全4册
  • 曹文轩系列儿童文学全套画本