sl:W5tLt
E8N|0WatiN与Gaillo有个约会
9L\IQ/|"K[(euZ051Testing软件测试网ihY2ya:E8I本文为作者原创,如需转载请声明作者及出处。51Testing软件测试网+E ^)?T(AO
又有大半年的时间没有来更新51Testing的博客了,开博已经4年多了时间了,博客的文章也就50多篇,实在是少的可怜。其实心中有很多的内容想写,想分享,可一贯的惰性使然,也就成了现在这样了。这大半年的时间,工作生活一如既往的平淡,动车脱轨了,日本地震了,物价上涨了,而作为IT人依然平淡的活着,为加薪高兴,为房子发愁,为孩子操心…..生活就是如此吧。好了,发了一通的感慨,言归正传,之前我写了一个关于WatiN的系列文章,介绍了WatiN一些使用的基本知识和应用。我在一些项目中也会应用WatiN,感觉这个工具还是不错的,但是要灵活,方便的使用它越是也要花些心思。之前说过,它结合Nunit,VSTS单元测试工具一起使用,可以增加它的易用性,但总是觉得力有未逮,直到我遇到了Gallio,一切问题都迎刃而解。51Testing软件测试网n'dAnQ%ZY
有人要问Gallio是什么?官方的说法是“Gallio自动化测试平台是一个开放、可扩展的中间平台,为.NET提供一个通用的测试用的对象模型、运行时服务和工具”。好的,我们注意到了,它是一个自动化测试平台,确切的来说它是一个开放式的单元测试平台,它支持众多的.NET单元测试工具,比如Nunit,Csunit,Mbunit等等。现在Gallio已经整合了自家的单元测试工具Mbnuit,这同样是一款非常优秀的单元测试工具,具有很多NUnit,MSunit不具备的超强功能,以后我会提到。为什么要选择Gallio和Mbunit呢?这是有原因滴。
xrG,m1tG0 VSTS的单元测试必须依赖Visual Studio这个IDE,运行起来太麻烦,日志功能也薄弱51Testing软件测试网U@MVy:W.N%g
Nunit运行起来方便,但是同样的,日志输出不给力,过于简陋,工具功能也太简单。51Testing软件测试网?9j
n&C%C
Gallio就不一样了,它具有一个非常优秀的Icarus GUI Test Runner工具,也具有一个命令行的工具(有了它,可以进行无人值守的计划任务测试)。而与它配套的Mbunit同样是一款优秀的单元测试工具,除了一般单元测试功能外,它还提供了多种数据源的数据驱动测试功能,日志输出功能,截图和视频功能等等。
2KF
zk1_]D0 51Testing软件测试网)gp!NL?5N~hO
下面我们就跟根据一个实例来讲解一下Gallio+WatiN的使用。
kd8B+pv01)首先安装Gallio,可以到Gallio的官方网站下载:http://www.gallio.org/Downloads.aspx51Testing软件测试网.FkI6R,pJS1@ OUk{
2)在Visual Studio建立一个类库项目,这里命名“WatiNAndGallio”,然后添加一个类,这里命名“SearchBaidu”,添加对于WatiN,Gallio的引用,Gallio直接在添加引用的弹出框中的.NET中找即可。如图
D5Z5R;a2LA!o051Testing软件测试网!igfi/[Ha&j
9An g+U'?4Z(DW(r03)再添加一个类,命名为“BrowserHelper”,这个类里定义了方法,用于截图。51Testing软件测试网,^~,k-y!kZGt
4)在“SearchBaidu”中编写测试代码,代码如下:
H'^|M$Z'P"v0usingSystem;
;q:oa4^qe0usingSystem.Collections.Generic;
y5x8mw6Adv4b0usingSystem.Text;51Testing软件测试网a
`Gb4FCA-`
usingMbUnit.Framework;51Testing软件测试网px;JC{zX
usingMbUnit;
s-u(M-pw-m
MC'|0usingGallio.Framework;
+Q$_$? bEt/c0usingGallio.Framework.Data;
];oSf$cDi
W*oH0usingWatiN.Core;51Testing软件测试网Mt;}sQ
namespaceWatiNAndGallio51Testing软件测试网$K K|@ V FEZ
{
T']aS.st5ARi&MDQ*J0 [TestFixture]51Testing软件测试网/NN#M#nLw/F
publicclassSearchBaidu51Testing软件测试网+Jl3b1~,}
{51Testing软件测试网+m+sY8C?e
BrowserHelperbh =newBrowserHelper();51Testing软件测试网8|5Bh+DY5meV ig D_
//使用CsvData数据驱动,Gallio中还包含其他类型的数据驱动,详细参考Gallio的帮助文档51Testing软件测试网*caG[1VJU+T4^ ad z9w
//Test:不用说了吧,用于标识测试的属性
sCoX)m&hIkM)?0 //Order:可选,用户表示执行测试的顺序51Testing软件测试网0K9^W0t]j
//FilePath:文件路径51Testing软件测试网v(L!D/yN{}
//HasHeader:是否有列名行
;V n,Tf&Q0 [Test(Order = 1),CsvData(FilePath =@"D:\\OpenSource\\WatiNAndGallio\\Data.csv", HasHeader =true)]
NiA{[Q
KW%U0 publicvoidSearchSomeThing(stringurl,stringsomeThing)
u5n c7LRq8a~a8k0 {51Testing软件测试网h*i!yL1R*c2Arp
//使用自定义的BrowserHelper的ConfigureWatiNSettings方法,对WatiN的动作进行跟踪,在Log可以看到
(oHE9c6UA5_q
p0 bh.ConfigureWatiNSettings();
.i-`R@-Xr0 IEie =newIE(url);51Testing软件测试网u;{IilZ
ie.TextField(Find.ById("kw")).TypeText(someThing);
S\kp*[sD]+O0 ie.Button(Find.ById("su")).Click();51Testing软件测试网F3zCCT9Zl
//输出日志,TestLog类中有很多的方法用于输出不同类型的日志,详细可以参考Gallio的帮助文档
7Fi:?*dDJ0 TestLog.WriteLine(string.Format("完成了\"{0}\"的搜索",someThing));51Testing软件测试网)c"Z:s'}a!y
d
//使用自定义的BrowserHelper的EmbedBrowserSnapshot方法,对浏览器内的内容进行截图,在Log可以看到51Testing软件测试网k pF{nfZ
bh.EmbedBrowserSnapshot(someThing,ie);
4@-gG&|w+F0 }51Testing软件测试网:p8W0R#@2{ D'M
}
*rQ,]nnv
Wu0}51Testing软件测试网[ ^Rb"i
5)对这个类型进行编译后,打开Gallio的Icarus GUI Test Runner工具,加载编译的这个DLL,如图
L8V;j2Tu)_l051Testing软件测试网,^GW,Pf3q]$e
%p#c"E+En!qo2SI0它是按照在Visual Studio中的目录结构进行显示的,最底层的一级就是Test,你可以勾选以用来选择你希望运行的测试。51Testing软件测试网/K)lZ ZH OM
M$CP Yn'_l_L06)这时,我们就可以点击Start,运行测试了,运行后会自动显示日志和测试结果,报告统计和写的很详细,更好的是这些报告可以导出多种格式,如图51Testing软件测试网Bt#hA4F)D[S,b P1~x
测试结果51Testing软件测试网*Am{'e^[S1jU-Jg
51Testing软件测试网y'v5KTw(P
/F"BbKs*VSy1L0测试执行日志51Testing软件测试网jI7iQ];~ fR
51Testing软件测试网Ru _7L{{e0J
51Testing软件测试网 lo-]:w4p.P2Ub
51Testing软件测试网Z.Q{+G B4hR
就这样,一个测试就完成了,其实步骤和原理与NUnit,VSTS都是差不多了的,只不过Gallio提供了一些更为人性化的强大功能。
W]Dg;L0 在本文的最后的附件里有这个事例的源代码,有兴趣的可以下载下来研究一下。由于大小的原因,引用的WatiN,Gallio类库都被删除了,需要自己重新引用。51Testing软件测试网!I{ I8bxH
}0i
NH9xJm051Testing软件测试网'd)JcE{.z(cWatiNAndGallio.rar(16.9 KB)
a.Cz{yraE0