WatiN系列之五 Watin与Nunit结合进行测试
上一篇 / 下一篇 2010-09-12 10:12:37 / 天气: 阴雨 / 心情: 平静 / 个人分类:WatiN
概述51Testing软件测试网|hH-e7?(r+Y2dT?/l
上篇文章中介绍了在VSTS中如何使用watin。本篇文章介绍如何在NUnit中使用Watin。
JX"gy!a Y[0Nunit作为一款老牌的单元测试工具,在开发人员中得到广泛的应用。51Testing软件测试网"z%h@m2AW
51Testing软件测试网"HS2^R#]mw
准备工作51Testing软件测试网iB(nyS/d)g3JWk c
在开始介绍如何在Nunit中使用Watin之前,需要做一些准备工作。51Testing软件测试网WtKcT"d^
l 下载及安装NUnit51Testing软件测试网.w'`\1P ~qk*SC?
l 创建演示Web程序
kK2].{%_Xgw0l 创建及配置测试程序51Testing软件测试网%RT} ?e ]-C
下载及安装Nunit51Testing软件测试网 @:b4c)[.}R6U
从NUnit官方站点下载Window Installer51Testing软件测试网3Z Y [W3V9j6}
创建演示Web程序51Testing软件测试网#y)M3[w `7m!z
我们将创建一个ASP.NET网站,接下来的测试代码将是针对这个简单Web站点的。先创建一个新项目。
6Fn{.[k0接下来在解决方案中创建业务逻辑层的类库BusinessLayer,其中添加一个类Arithmetic,用于一些算术操作。51Testing软件测试网'J/oLYd.SD
创建及配置测试程序
0Xru|F7X0然后在解决方案中创建一个新的类库WebAppUITesting,这个就是测试程序。51Testing软件测试网],iFn!liHj
在类库WebAppUITesting中添加应用配置文件App.config,内容如下:51Testing软件测试网-Ma0WIa
<?xmlversion="1.0"encoding="utf-8"?>51Testing软件测试网u*nH\X-lf <configuration> Wo8gS5s&FMQ-k,l0<configSections> "S%qigQR;t'\ XcN0<sectionGroupname="NUnit"> W#\n^A0<sectionname="TestRunner"type="System.Configuration.NameValueSectionHandler"/> 3[AvVD^4x \0</sectionGroup> ~r&z3j.{0</configSections>51Testing软件测试网gQ/t,OX }? s j <NUnit> y0BTI4R,Mr0<TestRunner>51Testing软件测试网"E7C;K,u-G R <!--Valid values are STA,MTA. Others ignored.--> r3T*M$t2hMz0<addkey="ApartmentState"value="STA"/> 5VU&t#D-bD+]7S0</TestRunner> T|5q$s7_0</NUnit>51Testing软件测试网x)t}aVw </configuration> b)s:|QU'`$c0 |
备注:Watin只能在STA下运行,而Nunit确是在MTA下运行的。所以直接在Nunit中运行watin代码会报错,所以为了解决这个问题,在测试程序中加入App.config配置文件可以解决这个问题。
$`Joe#@(OQ-@0B_n D5N:Is0
在类库WebAppUITesting中添加引用
L*]4m%Q,tvv3l0然后右键点击该类库,在右键菜单中选择“属性”,在属性->调试面板中,“启动外部程序”设置为Nunit.exe。这样在调试代码后会自动打开Nunit。51Testing软件测试网*zWeJ7iyv?N.u
最后解决方案的目录结构如下:51Testing软件测试网3g4Y#@+W? H V]%b
/Rt t1NIqV0编写测试程序,运行测试
q}*B/MCt0准备工作完成之后,把生成的被测试演示Web程序(WebApp)部署到IIS中,当然你也可以使用VS中自带的web服务器。Web页如下51Testing软件测试网Iy9cG4A4g
#tXu4NX)g@0这个站点的功能很简单,就是输入两个数字,然后提交后返回相加的结果。
\3ePM:Z/u;z3{0然后我们就可以编写针对这个站点功能的测试代码了。我们主要编写测试用例。
,rx`DH4v"m0用例一输入两个数字,验证加法是否正确51Testing软件测试网4[p,j"l:o:S.}K7z\!ob5o
用例二输入非数字字符,验证异常处理是否正确
\Q a3X:{ w3N0测试代码如下:
.e1Mro.cSJ0usingSystem.Diagnostics; ,Qe;Si.O\0usingWatiN.Core; AmZ iXOm*zDZ}`0usingNUnit.Framework;51Testing软件测试网T)cp z n usingSystem; #q-m8E!|'R#j3m.AYi(k0usingBusinessLayer; xti&}nx1M%mb0namespaceWebAppUITesting51Testing软件测试网W[}V ZE {51Testing软件测试网9w d/`1P"M$_ E [TestFixture] Q!I3r0ODiM0publicclassUITesting c7S4Uk VQ\~0{ &S@k Kz(n@ n0IEie=null;51Testing软件测试网nu*Ts8bj/`L [TestFixtureSetUp] ~[,u$V$v1z4aj!l0publicvoidInitTest() $N)D"` b1I4`0{51Testing软件测试网 a#effa ie =newIE("http://localhost/WebApp/Default.aspx");51Testing软件测试网.ab"e!ORAU.{ }51Testing软件测试网1x.\0~*ZD/N.Y+J(B //测试加法51Testing软件测试网4MX t$UX"F? [Test]51Testing软件测试网[+sM%EFf publicvoidAdditionTest() *Z(Bv0s?[Cd8L\0{ ;t3c,KZ3h*A0intnumber1 = 1; 7tr,v#K~)f,S[0intnumber2 = 2;51Testing软件测试网f[3h{.o*iXl*T //Watin测试代码 1F)rr%{(T~(rs-s0ie.ShowWindow(NativeMethods.WindowShowStyle.Maximize); .V8Dl(Gq+vK0ie.TextField(Find.ById("num1")).TypeText(number1.ToString()); OR3I R,lk0ie.TextField(Find.ById("num2")).TypeText(number2.ToString()); dE2YUg*By.NP0ie.Button(Find.ById("btnCheck")).Click(); VsB3]VfH2U0//预期结果 oK y!d/_0Arithmeticac =newArithmetic();51Testing软件测试网qsA0b0B"S4n+uP stringexpected = ac.addition(number1,number2).ToString(); h2l-Z@{ k0//实际结果 5w_q/J$d[fl0stringactual = ie.Span(Find.ById("lblResult")).Text;51Testing软件测试网3D4LI4p xEd1i //断言测试结果是否正确51Testing软件测试网pOw%J%r'JH`[ Assert.AreEqual(expected,actual); 51Testing软件测试网#ZRv]Em }51Testing软件测试网-C0R^Rm F"J1{a#m //测试异常处理51Testing软件测试网:wVQ@2n:d [Test] |