NUnit之Assertion详解
上一篇 / 下一篇 2012-02-09 22:05:41 / 个人分类:其它
文章来源
- 文章来源:【转载】
园子里有了不少介绍NUnit的文章,想到以前本人在上一家公司时也写过内部的PPT介绍,故将其整理、修改,并将分成以下三部分分别进行介绍:
wVZr3_-EFo#PA'W01:NUnit之Assertion详解51Testing软件测试网:Fp$oA5k/XYQgC
2:NUnit之Attribue详解
OTcW5d\ H03:NUnit扩展
Xa B#d-h0其中1、2部分比较简单,仅供对NUnit不太了解的网友参考,有兴起对NUnit进行扩展的网友可以关注第三部分。51Testing软件测试网/}(B)R Jh,^vq7z#E-m
51Testing软件测试网6m+| ^|&Gk9XL|)r_
NUnit之Assertion详解
\.j1aF]#C1S)Wp9t051Testing软件测试网f3^_$yA#M:U/k-nxGY
NUnit是.Net平台的测试框架,广泛同于.Net平台的单元测试和回归测试中。
,S }gN o(D#Fy0任何xUnit工具都使用断言进行条件的判断,NUnit自然也不例外,与其它的xUnit(如Junit、phpUnit、pythonUnit)相比,由于大量使用了Generic、Attribute等语言特征,NUnit提供了更为方面、灵活的测试方法,下面先介绍一下断言。51Testing软件测试网3m\/d1\5Q:@*r_P
Nunit一共有四个类断言类,分别是Assert、StringAssert、FileAssert和DirectoryAssert,它们都在NUnit.Framework命名空间,其中Assert是常用,也是我们最熟悉的,而另外三个断言类,顾名思义,分别对应于字符串的断言、文件的断言和目录的断言,理论上,仅Assert类就可以完成所有条件的判断,然而,如果合理的运用后面的三个断言,将使代码更加简洁、美观,也更加便于理解和维护。
?"y|;UB{,Hx)Xx0/|8j{8gy"}&q0
一:Assert类51Testing软件测试网Ju to8i
对于我们通常的单元测试代码,Assert类中的静态方法就可以完成,其中大家最熟悉的应该是Assert. AreEqual()方法,其实,除了AreEqual,NUnit还提供了众多的比较方式,满足不同的代码要求。
q1j i'Tu&U U7s9S9]b0*tY;^-S.m^ z)`0` [0
1:相等/不相等判断
G)ImM}&?0AreEqual:判断两个值相等51Testing软件测试网F2V!gd6n
AreNotEqual:判断两个值不相等
3bj8U0Z-F?x \+BWW0示例:51Testing软件测试网IFG&dgi lM
Int a=1
:|tK{5u#`K Q%R0Assert.AreEqual(a,1);//通过判断51Testing软件测试网TGL5Cf"mc;@$k1}
Assert.AreEqual(a,2);//不能通过判断
51Testing软件测试网s/w }(an1K-o-hU
注意,除了AreEqual/ AreNotEqual,下面几乎所有的方法都支持多态(多种数据类型),以及多参数,除了经常使用的Assert .AreEqual(int a,int b),还有一种典型的参数形式:
0i |dH%d/mM0Assert.AreEqual(inta,intb,stringmessage);
ChO6?:Gr A!V0或者 Assert.XXX(inta,intb,stringmessage);
其中第三个参数是条件不通过时输出的信息,以便于错误的定位
zna-K*~'N!U0对于double和decimal类型,这两个方法还支持比较时的浮点误差51Testing软件测试网Z2M%Pt#x3^oD^
例如以下代码:
6~O4Rdk!^ v"D0doublea =1.1;51Testing软件测试网V}7chf5Ps_.V U
doubleb =1.11;51Testing软件测试网8Fqp$F){D
doublec =0.1;51Testing软件测试网~7~#BXG"I
Assert.AreEqual(a, b, c);//通过判断
+?`d3r)d0c=0.01;51Testing软件测试网.f&W5IJd#w+h$h
Assert.AreEqual(a, b, c);//不能通过判断
51Testing软件测试网-B|G.S5gqFn
2:类的判断51Testing软件测试网aAk$o
Me.[t
AreSame:判断两个对象相等
vC U | ?3LP2] O&q!SW0AreNotSame:判断两个对象不相等51Testing软件测试网`u-@x[6Nj
Contains:判断是否是否某对象
tXm&VQ0示例:
B_uV V*b@0List<string> list =newList<string>();51Testing软件测试网Al'{}`
list.Add("a");