测试工具NUnit之Assertion详解

开发 测试
NUnit是一个单元测试框架,专门针对于.NET来写。我们今天要讲到的是其中的Assertion。

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

  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:判断两个值不相等

  示例:

 

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

 

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

  Assert.AreEqual(inta,intb,stringmessage);

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

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

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

  例如以下代码:

 

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

 

  2:类的判断

  AreSame:判断两个对象相等

  AreNotSame:判断两个对象不相等

  Contains:判断是否是否某对象

  示例:

 

  1.   List<string>list = newList<string>();  
  2.   list.Add("a");  
  3.   list.Add("b");  
  4.   Assert.Contains("a", list); //通过判断  
  5.   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:小于大于

  示例:

 

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

 

  5:类型判断

  IsInstanceOfType/ IsNotInstanceOfType:是/不是某个类的实例(从2.5之后支持泛型)

  例如:

 

  1.   publicclassPerson  
  2.   {  
  3.   publicstringname {set;get;}  
  4.   }  
  5.   Person p = newPerson();  
  6.   p.name = "a";  
  7.   Assert.IsInstanceOf(typeof(Person), p);//通过判断  
  8.   Assert.IsInstanceOf(typeof(System.String), p);//不能通过判断 

 

  6:异常判断

  Throws:应该抛出某类型的异常

  DoesNotThrow:不应该抛出某类型的异常

  7:其它常用的方法

  Pass:强行让测试通过

  Fail:强行让测试失败

  Ignore:忽略该测试方法

  Inconclusive:未验证该测试

  二:StringAssert类

  StringAssert用于String类型的断言判断:

  StringAssert.Contains:是否包含子串

  StringAssert.StartsWith:是否以某子串开头

  StringAssert.EndsWith:是否以某子串结尾

  StringAssert.AreEqualIgnoringCase:两个字符串是否在不区分大小写时相等

  StringAssert.IsMatch:是否匹配,(使用正则表达式进行字符串比较)

  示例:

 

  1.   strings1 = "abc";  
  2.  StringAssert.Contains("b", s1);  
  3.  StringAssert.StartsWith("a", s1);  
  4.   StringAssert.EndsWith("c", s1);  
  5.   strings2 = "aBc";  
  6.   StringAssert.AreEqualIgnoringCase(s1, s2);  
  7.   StringAssert.IsMatch("[a|book]""123"); 

 

  三:CollectionAssert类

  AllItemsAreInstancesOfType:集合中的各项是否是某某类型的实例

  AllItemsAreNotNull:集合中的各项均不为空

  AllItemsAreUnique:集合中的各项唯一

  AreEqual:两个集合相等

  AreEquivalent:两个集合相当

  AreNotEqual:两个集合不相等

  AreNotEquivalent:两个集合不相当

  DoesNotContain:集合中不包含某对象

  IsSubsetOf:一个集合是另外一个集合的子集

  IsNotSubsetOf:一个集合不是另外一个集合的子集

  IsEmpty:集合为空

  IsNotEmpty:集合不为空

  IsOrdered:集合的各项已经排序

  示例:

 

  1.   List<int>a = newList<int>();  
  2.   List<int>b = newList<int>();  
  3.   CollectionAssert.IsEmpty(a);  
  4.   for(inti = 1;i <= 10;i++)  
  5.   {  
  6.   a.Add(i);  
  7.   b.Add(i);  
  8.   }  
  9.   CollectionAssert.AreEqual(a, b);  
  10.   CollectionAssert.IsOrdered(a);  
  11.   b.Remove(1);  
  12.   CollectionAssert.IsSubsetOf(b, a);  
  13.   CollectionAssert.AreEqual(a, b); 

 

  后记:关于NUnit的断言就大概介绍这些,其实,不仅仅是测试人员,.Net程序员也应该熟悉掌握NUnit,以保证自己的代码质量,关于NUnit的进一步使用,将陆续介绍。

原文链接:http://www.cnblogs.com/gannan/archive/2012/02/09/2343416.html

【编辑推荐】

  1. 测试用例设计方法1 等价类边界值
  2. 测试用例设计方法2 因果图判定表
  3. 软件测试接口测试的测试用例类型
  4. 关于手机测试用例设计的几件事
  5. 浅谈跟踪测试用例
  6. 测试用例与输入数据的设计方法
责任编辑:彭凡 来源: 博客园
相关推荐

2009-07-23 16:14:03

.NET测试工具NUnit2.5

2010-06-04 16:07:09

Linux 性能测试工

2016-09-14 11:09:06

Web工具运维

2018-01-23 15:02:42

负载测试工具Gatling

2015-07-27 18:19:22

Linuxstress参数

2009-06-26 10:22:58

JSF测试

2011-05-31 18:09:05

动态测试

2010-06-04 16:31:33

Linux网络测试

2014-07-01 10:09:01

2023-12-27 07:35:29

HyBench数据字段

2019-02-26 08:30:48

2012-12-24 22:54:31

2013-11-13 10:49:50

2011-05-31 18:25:25

测试工具

2009-03-31 09:49:40

Rational功能测试性能测试

2011-04-07 13:53:25

Web工具

2010-05-28 09:14:52

Linux性能测试工具

2024-03-06 18:09:06

Linux性能工具

2009-05-18 08:52:17

压力测试Rpplet测试

2012-01-13 15:55:51

点赞
收藏

51CTO技术栈公众号