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

看看我们的测试代码,我们可以看到一些适宜的重构。所有的方法共享一组公共的测试对象。让我们来将这些初始化代码放到一个setup方法中并在所有的测试中重用它们。我们的测试类的重构版本像下面这样:

namespace bank {
    using System;
    using NUnit.Framework;

[TestFixture]
    public class AccountTest {
        Account source;
        Account destination;

   [SetUp]
        public void Init() {
            source = new Account();
            source.Deposit(200.00F);
            destination = new Account();
            destination.Deposit(150.00F);
        }

   [Test]
        public void TransferFunds() {
            source.TransferFunds(destination, 100.00f);

       Assert.AreEqual(250.00F, destination.Balance);
            Assert.AreEqual(100.00F, source.Balance);
        }

   [Test]
        [ExpectedException(typeof(InsufficientFundsException))]
        public void TransferWithInsufficientFunds() {
            source.TransferFunds(destination, 300.00F);
        }

   [Test, 
         Ignore (
            "Need to decide how to implement transaction management in the application"
        )]
        public void TransferWithInsufficientFundsAtomicity() {
            try {
                source.TransferFunds(destination, 300.00F);
            }
            catch(InsufficientFundsException expected) {
            }

       Assert.AreEqual(200.00F,source.Balance);
            Assert.AreEqual(150.00F,destination.Balance);
        }
    }
}

注意这个初始化方法拥有通用的初始化代码,它的返回值类型为void,没有参数,并且由[SetUp]特性标记。编译并运行——同样的黄条!

======全文完==========

如果你安装了NUnit V2.1,可以在 开始->程序->NUnit V2.1->QuickStart 处得到原文(英文版)。