.NET单元测试学习(一)

断言(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

 

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值