• .NET单元测试断言(Assert)


    断言(Assertions)是单元测试框架中比较核心的应用,如果一个测试方法中有多个断言,其中一个断言失败也会导致测试不通过,或报告错误信息。断言分为多种,如下列表:
              ●同等断言 Equality Asserts;
              ●一致性断言 Identity Asserts;
              ●比较断言 Comparison Asserts;
              ●类型断言 Type Asserts;
              ●条件测试 Condition Test;
              ●工具方法 Utility Methods;      

         【同等断言 Equality Asserts】

          此方法判断两个参数是否相等,重载方法提供了公共的值类型,所以参数间不存在装箱操作就可直接使用进行比较。
          主要的此类断言比较方法如下:
              (1)Assert.AreEqual(param1,param2,[message],[param[]])
                (2) Assert.AreNotEqual(参数同上)
           param1是你期望的值,param2是测试用的值,如果参数是数值,不能的数据类型之间的比较也是允许的,比如说INT 与DOUBLE等。如:Assert.AreEqual(12,2.5)   。但是在对Float类型进行比较时,需要设置一个偏差数(tolerance),也就是说两个数的偏差在这个范围内就认为是相等的。    
           此外Assert.AreEqual还可以用来比较N维数组或集合(collection),只要数据组维数、元素数据类型相等再加上各相应的元素值也相等,则认为两个比较的参数相等。

          【一致性断言 Identity Asserts】

          Assert.AreSame and Assert.AreNotSame  是用来判断两个参数所引用的对象是否一致,如:

              Assert.AreSame(object param1,object param2,[message])
              Assert.AreNotSame(object param1,object param2,[message])

         另外还有一个方法(Assert.Contain())用来判断一个对象是否包含一个数组或IList对象。

              Assert.Contain(object param1,Array param2)
              Assert.Contain(object param2, IList param2)

          【条件测试 Condition Test】

         这个方法测试的是条件是否成立,同也可选择性的使用参数来返回信息。方法签名如下:

              Assert.IsTrue(condition,[message])
              Assert.IsFalse(condition,[message])
              Assert.IsNull(object anObject,[message])
              Assert.IsNotNull(object anObject,[message]) 
              Assert.IsNaN(Double anDouble,[message])    //值是否是数字
              Assert.IsEmpty(String anString,[message])
              Assert.IsNotEmpty(String anString,[message])
              Assert.IsNotEmpty(ICollection collectionType,[message])
         注意:Assert.IsNotEmpty 和Assert.IsEmpty只能用于判断String和Collection类型。

         【比较断言 Comparison Test】

         在了解了关于两对象的相等测试后,就会想要是大于,小于,大等于,小于等于怎么写?同样断言提供了上述的几个方法分别是:Greater,Less,GreaterOrEqual,LessOrEqual. 方法签名如下:

              Assert.Greater( int arg1, int arg2,[message] );
              Assert.Greater( int arg1, int arg2, [string message] );
              Assert.Greater( decimal arg1, decimal arg2, [string message]  );
              Assert.Greater( double arg1, double arg2, [string message]  );
              Assert.Greater( double arg1, double arg2 , [string message] );
              Assert.Greater( float arg1, float arg2 , [string message] );
              Assert.Greater( IComparable arg1, IComparable arg2, [string message]  );

         同样另外三个比较方法的参数也跟上面一样,就不哆嗦了。

         【类型断言 Type Asserts】

         我们可以去断言一个对象的类型是什么,比如说方法的返回值类型等等。通过如下方法:

       Assert.IsInstanceOfType( Type expected, object actual, [string message], [params object[] parms]  );
       Assert.IsNotInstanceOfType( Type expected, object actual, [string message], [params object[] parms]  );
             IsInstanceOfType和IsInstanceOfType用来判断是否兼容于指定类型,即expected 是否兼容(属)于actual ,示例:
                Type t=new object().GetType();
                string s="dd";
                Assert.IsInstanceOfType(s,t);

          【工具方法 Utility Method】

         故明思义,效用方法。它包括两个方法Fail() and Ignore() 它能够让你更直接的控制测试程序。如下:

                   Assert.Fail([string message],[param object[]])
                   Assert.Ignore([string message],[param object[]])

             Fail()方法是让你能够产生一个失败的测试,即让某个测试立即失败。Ignore()能够动态地使一个或一组测试在运行时被忽略。不过这两个并不常用。

         【StringAssert】

         它提供了一系列方法来验证string类型的值,方法如下:

              StringAssert.Contains(string expected,string actual,[message],[params object[] args])
              StringAssert.StartsWith(同上)
              StringAssert.EndWith(the same as above)
              StringAssert.AreEqualIgnoringCase(the same as above)
              StringAssert.IsMatch(the same as above)

         【CollectionAssert】

         提供一系列方法来校验集合本身的内容或者两集合之间的比较,如下:

              .AllItemsAreInstancesOfType(ICollection,Type,[message],[param[]])   //判断指定集合中的所有元素是否是所需类型的实例(ICollection是要测试的集合,Type应该为ICollection中包含每个对象查找的对象的类型)。
              .AllItemsAreNotNull(ICollection,Type,[message],[param[]])  //判断集合中所有元素是否为空,如果为空则测试失败。
              .AllItemsAreUnique(ICollection,Type,[message],[param[]])    //判断集合中的所有元素是否唯一,如果集合中任意两个元素相等则测试失败。
              .AreEqual(ICollection expect,ICollection Actual,[],[],[])   //这个方法重载的参数还是很多的,相关的可以查下MSDN,测试两个集合是否相等(所谓的相等是指具有相同顺序、相同数量的相同元素)expect是测试要求的,Actual是测试生成的集合,
              .AreEquivalent(ICollection expect,ICollection Actual,[message],[param[]])    //判断两个集合是否包含相同的元素,如果一个集合中包含另一个集合没有的元素则引发异常。
              .AreEqual(.........)   //参数与AreEqual相同,功能则相反
              .AreNotEquivalent(............)    //参数与世AreEquivalent同,功能则相反。
              .Contains(ICollection, Object,[message],[param[]])    //判断集合是否包含指定的元素
               .DoesNotContain(the same as above) 
       //the reversed as above

    转自:http://www.cnblogs.com/ision/archive/2008/09/26/1298189.html

    静守己心,看淡浮华
  • 相关阅读:
    jsp页面增加语音播报
    tomcat页面重定向跳转
    飘窗
    将回车键与页面ID绑定
    例35:十进制转二进制
    例33:求100-200间素数
    例30:尼科彻斯定理
    例29:哥德巴赫猜想
    例28:斐波那契数列
    例27:哈希查找
  • 原文地址:https://www.cnblogs.com/jianglingli83/p/2961847.html
Copyright © 2020-2023  润新知