园子里有了不少介绍NUnit的文章,想到以前本人在上一家公司时也写过内部的PPT介绍,故将其整理、修改,并将分成以下三部分分别进行介绍:

  1:Assert类

  2:NUnit之Attribue详解

  3:NUnit扩展

  其中1、2部分比较简单,仅供对NUnit不太了解的网友参考,有兴起对NUnit进行扩展的网友可以关注第三部分。

  NUnit之Assertion详解

  NUnit是.Net平台的测试框架,广泛同于.Net平台的单元测试和回归测试中。

  任何xUnit工具都使用断言进行条件的判断,NUnit自然也不例外,与其它的xUnit(如Junit、phpUnit、pythonUnit)相比,由于大量使用了Generic、Attribute等语言特征,NUnit提供了更为方面、灵活的测试方法,下面先介绍一下断言。

  Nunit一共有四个类断言类,分别是Assert、StringAssert、FileAssert和DirectoryAssert,它们都在NUnit.Framework命名空间,其中Assert是常用,也是我们熟悉的,而另外三个断言类,顾名思义,分别对应于字符串的断言、文件的断言和目录的断言,理论上,仅Assert类可以完成所有条件的判断,然而,如果合理的运用后面的三个断言,将使代码更加简洁、美观,也更加便于理解和维护。

  一:Assert类

  对于我们通常的单元测试代码,Assert类中的静态方法可以完成,其中大家熟悉的应该是Assert. AreEqual()方法,其实,除了AreEqual,NUnit还提供了众多的比较方式,满足不同的代码要求。

  1:相等/不相等判断

  AreEqual:判断两个值相等

  AreNotEqual:判断两个值不相等

  示例:

    Int a=1 
    Assert.AreEqual(a,1);//通过判断 
    Assert.AreEqual(a,2);//不能通过判断

  注意,除了AreEqual/ AreNotEqual,下面几乎所有的方法都支持多态(多种数据类型),以及多参数,除了经常使用的Assert .AreEqual(int a,int b),还有一种典型的参数形式:

 Assert.AreEqual(inta,intb,stringmessage);

 或者 Assert.XXX(inta,intb,stringmessage);

  其中第三个参数是条件不通过时输出的信息,以便于错误的定位

  对于double和decimal类型,这两个方法还支持比较时的浮点误差

  例如以下代码:

    doublea = 1.1; 
    doubleb = 1.11; 
    doublec = 0.1; 
    Assert.AreEqual(a, b, c);//通过判断 
    c=0.01; 
    Assert.AreEqual(a, b, c);//不能通过判断

  2:类的判断

  AreSame:判断两个对象相等

  AreNotSame:判断两个对象不相等

  Contains:判断是否是否某对象

  示例:

    Listlist = newList(); 
    list.Add("a"); 
    list.Add("b"); 
    Assert.Contains("a", list); //通过判断 
    Assert.Contains("aa", list); //不能通过判断

  3:条件判断

  IsTrue:判断条件为真

  True:同上

  IsFalse:判断条件为假

  False:同上

  IsNull:判断是否为空

  Null:同上

  IsNotNull:判断不为空间

  NotNull:同上

  IsNaN:判断数值是Nan

  IsEmpty/IsNotEmpty:判断字符串是否为空/不为空

  IsEmpty/IsNotEmpty:判断集合是否为空/不为空

  示例:

 inta=100;

 Assert. IsTrue(a==100);//通过判断

 Assert. True(a==100);//通过判断

  4:比较判断

  Greater:大于

  GreaterOrEqual:大于等于

  Less:小于

  LessOrEqual:小于大于

  示例:

    inta = 100; 
    Assert.Greater(a, 99); 
    Assert.GreaterOrEqual(a, 100);