zoukankan      html  css  js  c++  java
  • [转]使用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的帮助文档:)

  • 相关阅读:
    django类视图MRO
    ThreadPoolExecutor 多线程
    数论-最小公倍数、整数的唯一分解定理、一次不定方程
    buuctf-level4
    数论-整除+欧几里得+扩展欧几里得
    第三届江西省网络安全大赛-部分Crypto
    网鼎杯-re-signal
    nebula 星云模拟器适配 xbox手柄;星云模拟器支持xbox手柄;星云模拟器xbox手柄配置;
    git 上传大文件;remote: fatal: pack exceeds maximum allowed size
    Kawaks 项目文件整理
  • 原文地址:https://www.cnblogs.com/feinian/p/1494279.html
Copyright © 2011-2022 走看看