逖靖寒的世界

每天进步一点点

导航

使用Nunit进行单元测试入门

 

使用Nunit进行单元测试入门

前言:

Nunit是一项开源的项目,利用Nunit,你可以方便快捷地对已有的.NET组件进行单元测试。利用Nunit,你可以在不修改原有代码的情况下,编写专门的测试代码对需要测试的函数和组件进行测试。如果大家有兴趣可以将NunitVSTS自带的单元测试进行比较:)

正文:

如果你的机器上没有安装Nunit,请先到http://www.nunit.org/download.html下载,并安装到机器上。

接下来,我们来看看究竟如何来使用Nunit进行单元测试

现在,我有这样一个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; }

        }

    }

}

但是我并不知道这个类是否可以正确地工作,所以我需要对Account类进行单元测试。

在可以新建一个类库项目,在这个类库的引用项目中指定Account.dll和Nunit.framework.dll。注意,Nunit.framework.dll文件在你安装Nunit的bin目录下。

然后我在这个新建的类库项目中添加一个AccountTest的类文件后编译,该文件如下:

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);

        }

    }

}

请注意,这个测试类一定要是public的,否则Nunit无法正常工作。

接下来,我们启动Nunit(在你的桌面上有快捷方式的图标),然后在File -> Open Project中打开到你刚刚编译出来的AccountTest.dll即可。这个时候,你会发现右边有一个“Run”的按钮可以使用了,点击它,这个时候,Account类的单元测试就开始了。测试完毕后,出现红色的标志,这是测试失败的标志。这说明我们的Account类有问题,我们需要将Account类中的Withdraw方法完成:

public void Withdraw(float amount)

{

    balance -= amount;

}

重新编译Account类以后,我们再次点击“Run”按钮,这个时候,红色变成了绿色,这说明测试通过了。

这样,你便完成了对Account类的测试,接下来,我们来详细说一说AccountTest类中奇怪的Attributes

TestFixture

这个Attribute只能在类上使用,他告诉Nunit这个类中包含有需要测试的方法。

不过注意这个类保证一下4点:

1.   这个类必须是Public的。

2.   这个类不能是Abstract的。

3.   这个类必须有一个默认构造函数。

4.   这个类中的方法被标记的Attribute只能出现一次:SetUp, TearDown, TestFixtureSetUp 和 TestFixtureTearDown。

Test

这个Attribute只能标记了TestFixture的类中的方法上使用,他告诉Nunit这个是一个需要测试的方法。

在下来就是AccountTest类中的TransferFunds方法中的Assert

它类似与.NET Framework中的Assert类,如果Assert中的方法返回False,这测试结果为失败,否则为成功。在Nunit中,就是使用Assert来判断一个测试是否通过。

好了,相信现在大家一定对Nunit的使用有了基本的了解了。那么,恭喜大家了。

后记:

Nunit是一个不断完善的免费工具,但是这并代表他比VSTS自带的单元测试工具差,他对VS的支持也是相当不错的,而且可以针对自己对测试的需要来自定义很多功能,同时对插件的支持也给了我们更大的空间来发挥Nunit的功能。

关于更多更详细的介绍,请大家查看Nunit的帮助文档:)

posted on 2007-10-06 11:53  逖靖寒  阅读(5029)  评论(6编辑  收藏  举报