NUnit之Assertion详解
上一篇 / 下一篇 2012-02-09 22:05:41 / 个人分类:其它
文章来源
- 文章来源:【转载】
园子里有了不少介绍NUnit的文章,想到以前本人在上一家公司时也写过内部的PPT介绍,故将其整理、修改,并将分成以下三部分分别进行介绍:
~PTK5{#d0J`5v@+om%qLT1KR J02:NUnit之Attribue详解51Testing软件测试网un p zU6^:hp+~
3:NUnit扩展
?!c5dNgZB{0其中1、2部分比较简单,仅供对NUnit不太了解的网友参考,有兴起对NUnit进行扩展的网友可以关注第三部分。51Testing软件测试网 R*Yv^9B(_
sDuk6t%I0
NUnit之Assertion详解51Testing软件测试网5Rm ps3Zh*[r~+o'YCO2^
51Testing软件测试网A@3Pu%h0ec`v
NUnit是.Net平台的测试框架,广泛同于.Net平台的单元测试和回归测试中。51Testing软件测试网O"?nWfn
任何xUnit工具都使用断言进行条件的判断,NUnit自然也不例外,与其它的xUnit(如Junit、phpUnit、pythonUnit)相比,由于大量使用了Generic、Attribute等语言特征,NUnit提供了更为方面、灵活的测试方法,下面先介绍一下断言。
3Q:^F0P9Z mG2TK0Nunit一共有四个类断言类,分别是Assert、StringAssert、FileAssert和DirectoryAssert,它们都在NUnit.Framework命名空间,其中Assert是常用,也是我们最熟悉的,而另外三个断言类,顾名思义,分别对应于字符串的断言、文件的断言和目录的断言,理论上,仅Assert类就可以完成所有条件的判断,然而,如果合理的运用后面的三个断言,将使代码更加简洁、美观,也更加便于理解和维护。51Testing软件测试网7E3[(S,c3MM
q"bgRg.@0
一:Assert类
+x)Wx.Vm@l0对于我们通常的单元测试代码,Assert类中的静态方法就可以完成,其中大家最熟悉的应该是Assert. AreEqual()方法,其实,除了AreEqual,NUnit还提供了众多的比较方式,满足不同的代码要求。
t^ W]-CT0;A2u F^Ol9@0
1:相等/不相等判断
mD#}a'A!@n0AreEqual:判断两个值相等
S8uv#`/B G#V"a0AreNotEqual:判断两个值不相等
!Y0f7~Em4k9F0示例:
F4S4Gw cU2nm+|0Int a=151Testing软件测试网$L$eR5X T6{
Assert.AreEqual(a,1);//通过判断51Testing软件测试网Rc0s7ot/cYj
Assert.AreEqual(a,2);//不能通过判断
51Testing软件测试网QJ2_4DC'Qu q
注意,除了AreEqual/ AreNotEqual,下面几乎所有的方法都支持多态(多种数据类型),以及多参数,除了经常使用的Assert .AreEqual(int a,int b),还有一种典型的参数形式:
7G+H%`Y.l3@L"T)[Re'r(t0Assert.AreEqual(inta,intb,stringmessage);51Testing软件测试网"e5`9g_B_+C!NX;[x"NZG
或者 Assert.XXX(inta,intb,stringmessage);
其中第三个参数是条件不通过时输出的信息,以便于错误的定位51Testing软件测试网1A/|"T i:\
对于double和decimal类型,这两个方法还支持比较时的浮点误差
NfZ0Q`5Zf0例如以下代码:
,Fk0a)_Y6Xi0doublea =1.1;
/bjq7BL |Kv*c0doubleb =1.11;
7r{Kp7b M%nG0doublec =0.1;51Testing软件测试网0kh:c*H`$Y)O'Z
Assert.AreEqual(a, b, c);//通过判断
$\8kR8LLVj0c=0.01;51Testing软件测试网\8h\*H'q|K%@
Assert.AreEqual(a, b, c);//不能通过判断
\4y)JdR[1}o1u5m02:类的判断
AreSame:判断两个对象相等51Testing软件测试网u@p4Z$h
AreNotSame:判断两个对象不相等
9}1IZ&?#t;Y"K_*X0Contains:判断是否是否某对象
5U!gMT'Fxh;z0示例:51Testing软件测试网~/p#v%M$Z"Wv
List<string> list =newList<string>();
m[J@dZP7C0list.Add("a");51Testing软件测试网$\-m Rc S2Lg
list.Add("b");
vuQ+`3c)sO5[G;Z0Assert.Contains("a", list);//通过判断51Testing软件测试网LB2a` F8Aa`o!b
Assert.Contains("aa", list);//不能通过判断
51Testing软件测试网 sES7t2[*` H
3:条件判断
$d"mT"Lb2ae ]%\0IsTrue:判断条件为真
S*@Q|6D0zS!d0True:同上51Testing软件测试网6P p)q/P-K y
IsFalse:判断条件为假
An6K|9q Y F0False:同上
|F-^/xVyHv_(c5_`0IsNull:判断是否为空51Testing软件测试网Xb0k PX*e/J)K5q
Null:同上51Testing软件测试网T%aV+]9vr"S'C
IsNotNull:判断不为空间51Testing软件测试网I-tx+A7O8?
NotNull:同上
8w1hHtV&s