zoukankan      html  css  js  c++  java
  • 图解在VS2005利用NUnit进行测试 dodo

    介绍
    NUnit是一款用于在.net环境进行单元测试的工具,它的官方网站是:http://www.nunit.org,需要了解历史和下载最新版本的朋友可以去官方网站下载,目前最新版本是2.4.6了,提供msi安装文件和压缩包形式下载,并且支持.net1.1和.net2.0。目前它的最新版本是2.4.6.0。

    下载截图

    二、开发

    NUnit的运行界面
    利用NUnit进行开发之前,需要先添加类库引用,如下图:

    添加对NUnit.framework.dll的引用

    然后编写代码

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace NUnitDemo
    {
        
    /// <summary>
        
    /// 说明:这是一个类,用于测试。
        
    /// </summary>
        public class Person
        {
            
    private int personId;
            
    private string name;
            
    private DateTime birthday;
            
    /// <summary>
            
    /// 生日
            
    /// </summary>
            public DateTime Birthday
            {
                
    get { return birthday; }
                
    set { birthday = value; }
            }
        
            
    /// <summary>
            
    /// 姓名
            
    /// </summary>
            public string Name
            {
                
    get { return name; }
                
    set { name = value; }
            }
        
            
    /// <summary>
            
    /// 编号
            
    /// </summary>
            public int PersonId
            {
                
    get { return personId; }
                
    set { personId = value; }
            }
        
        }
    }

    用于测试的类:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using NUnit.Framework;

    namespace NUnitDemo
    {
        [TestFixture]
        
    /// <summary>
        
    /// 说明:这是一个测试类,用来展示NUnit的用法。
        
    /// </summary>
        public class Test
        {
            Person p 
    = new Person();
            
    public Test()
            {
            }
            [Test]
            
    public void CheckPersonId()
            {
                Assert.AreEqual(p.PersonId, 
    0);//检查对值类型数据未明确赋值之前是不是为0
            }
            [Test]
            
    public void CheckPersonNameNull()
            {
                Assert.AreEqual(p.Name, 
    null);//检查对字符串类型数据未明确赋值之前是不是为null
            }
            [Test]
            
    public void CheckPeronBirthday()
            {
                Assert.AreEqual(p.Birthday, DateTime.MinValue);
    //检查对日期时间类型数据未明确赋值之前是不是为DateTime.MinValue
            }

            [Test]
            
    public void CheckSum()
            {
                
    int i = 2, j = 6;
                
    int num = 2 + 6;
                Assert.AreEqual(num, 
    9);
            }
            [Test]
            [Ignore(
    "忽略的原因")]
            
    public void CheckClassType()
            {
                Assert.IsInstanceOfType(
    typeof(object), p);
            }
        }
    }

    第一次使用NUnit的人可能对上面的代码有些地方感到陌生,因为NUnit通过反射来获取程序中的相关信息,从而得知哪些类中的哪些方法需要进行测试,所以有必要对NUnit的一些常用属性进行了解:
    TestFixture属性:用来标识类,表示这个可能包含有用于测试的方法。
    Test属性:用来标识方法,表示这个方法需要进行测试(前提是该方法所在的类是可以测试的)。
    SetUp属性:用来标识方法,在开始所有测试之前执行,用来在测试前初始化一些资源,比如初始化类。
    TearDown属性:用来标识方法,在所有测试完成之后执行,用来释放一些资源。
    Ignore属性:用来标识方法,指示这个方法由于某些原因暂时不需要测试(比如没有完成相关代码)。

    更多其它属性的介绍请查阅随同下载的文档(位于doc目录下的attributes.html)。另外我们还需要注意的是,用于测试的类必须是public的,最好有一个缺省的构造函数。同时用于测试的方法必须不带任何参数,并且不返回任何参数,同时也必须是public的。

    程序代码:

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace NUnitDemo
    {
        
    /// <summary>
        
    /// 说明:这是一个类,用于测试。
        
    /// </summary>
        public class Person
        {
            
    private int personId;
            
    private string name;
            
    private DateTime birthday;
            
    /// <summary>
            
    /// 生日
            
    /// </summary>
            public DateTime Birthday
            {
                
    get { return birthday; }
                
    set { birthday = value; }
            }
        
            
    /// <summary>
            
    /// 姓名
            
    /// </summary>
            public string Name
            {
                
    get { return name; }
                
    set { name = value; }
            }
        
            
    /// <summary>
            
    /// 编号
            
    /// </summary>
            public int PersonId
            {
                
    get { return personId; }
                
    set { personId = value; }
            }
        
        }
    }

    测试的相关代码:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using NUnit.Framework;

    namespace NUnitDemo
    {
        [TestFixture]
        
    /// <summary>
       
    /// </summary>
        public class Test
        {
            Person p 
    = new Person();
            
    public Test()
            {
            }
            [Test]
            
    public void CheckPersonId()
            {
                Assert.AreEqual(p.PersonId, 
    0);//检查对值类型数据未明确赋值之前是不是为0
            }
            [Test]
            
    public void CheckPersonNameNull()
            {
                Assert.AreEqual(p.Name, 
    null);//检查对字符串类型数据未明确赋值之前是不是为null
            }
            [Test]
            
    public void CheckPeronBirthday()
            {
                Assert.AreEqual(p.Birthday, DateTime.MinValue);
    //检查对日期时间类型数据未明确赋值之前是不是为DateTime.MinValue
            }

            [Test]
            
    public void CheckSum()
            {
                
    int i = 2, j = 6;
                
    int num = 2 + 6;
                Assert.AreEqual(num, 
    9);
            }
            [Test]
            [Ignore(
    "忽略的原因")]
            
    public void CheckClassType()
            {
                Assert.IsInstanceOfType(
    typeof(object), p);
            }
        }
    }

    运行nunit.exe(图形化方式,如果想利用控制台方式请运行nunit-console.exe),通过【File】->【Open Project】方式打开生成的程序文件,然后点【Run】按钮运行测试,测试上面的代码结果如下:

    我们可以看到用于测试方法有三种颜色,这三种颜色指示了测试的结果:
    绿色:标识测试通过
    黄色:标识忽略了测试这个方法 
    红色:标识测试失败

    三、集成到Vs2005

    如果每次测试都要先编译程序,再打开NUnit.exe,找到生成的文件测试,这样太费时也太费事了,下面讲怎么集成到Vs2005中。

    首先打开项目属性,如下图:


    接着打开【设置选】项卡,进行设置:


    通过以上设置,我们每次按F5或者调试运行项目的时候就自动启动NUnit.exe并且加载生成的文件,只需要点击【Run】就可以测试了。相当方便。

  • 相关阅读:
    php基础设计模式(注册树模式、工厂模式、单列模式)
    微信公众平台实现获取用户OpenID的方法
    如何成为一名优秀的工程师(语义篇)
    操作系统死锁原因及必要条件
    Word中怎样删除分节符而不影响前节页面设置
    当代码变更遇上精准测试的总结
    Windows网络命令
    linux shell编程
    Oracle远程登录命令
    数据库别名AS区别
  • 原文地址:https://www.cnblogs.com/zgqys1980/p/1298836.html
Copyright © 2011-2022 走看看