在Cruise环境中加入Selenium集成测试

 

前文中我们成功使用
ANT

Maven2

Cruise
搭建了持续集成环境,实现了
compile

test

tag

deploy

publish
等自动化环境。今天我们再接再厉,为其加入
Selenium
集成测试。

关于
Selenium
的介绍和使用方法,在此不做赘述,各位可以借助万能的
google
来入门一下,下面我们直切主题。

集成测试前

部署工程

因为在执行集成测试时,需要工程在
web
容器下正常运行,所以,在
maven

pre-integration-test
阶段,我们需要将工程部署到
web
服务器下:

 
 

启动
selenium server

使用
maven
调用
selenium
,是通过
selenium-maven-plugin
这个插件实现的,配置如下:



我们需要在
pre-integration-test
阶段使用
start-server
目标启动
selenium
服务器,执行完集成测试,则需要在
post-integration-test
阶段使用
stop-server
目标停掉之。

Xvfb

对于
linux
下的集成测试,
cruise
可能运行在纯字符界面,因此,当
selenium
启动浏览器时,会报无
xserver
的错误,这时,我们就需要使用
xvfb
这个界面模拟程序来搞定这个问题了。正如下面这个链接所述

http://mojo.codehaus.org/selenium-maven-plugin/examples/headless-with-xvfb.html

 



我们会在
pre-integration-test
阶段启动
xvfb
,然后
selenium
就可以在模拟的
xserver
中启动浏览器了。

但是,我们这样配置之后,虽然
linux
下可以正常运行集成测试,但是在
windows
下,我们的测试失败了。

原因就出在这个
xvfb
上。在
windows
下,没有这个程序来运行,
pre-integration-test
阶段自然就失败了

我们使用
${noxvfb}
变量,来决定是否运行
xvfb
,变量的值来自外部。那么我们就可以用类似
mvn integration-test –Dnoxvfb=true
的命令来关闭
xvfb
了。

不过本地频繁的输入这个参数是一个很大的浪费(起码键盘会折寿的说

),而且还要人工判断是否是
windows
系统。所以,再次请出
ant
大神:



使用
<contains
string="${os.name}" substring="nux"/>

标签来判断系统是否为
linux
,以便决定是否启动
xvfb

执行集成测试

Selenium

maven
扩展支持两种调用方式:使用使用
surefire

junit
调用和
selenese

surefire

junit
调用

Maven2
为我们提供了
integration-test
阶段来进行集成测试,而一般我们会使用
maven-surefire-plugin
这个插件来调用
junit
,进一步调用
Selenium
的测试用例(
Selenium
支持多种语言进行),这一做法也可以找到一箩筐的解决方案,比如这里:

http://blog.csdn.net/dqatsh/archive/2009/02/20/3913306.aspx

和官方示例:

http://mojo.codehaus.org/selenium-maven-plugin/examples/using-with-surefire.html

正如文中所述,
maven-surefire-plugin
已经被默认注册到了
test
阶段,因此我们会使用如下的显示定义来在集成测试阶段调用
junit



注意:由于
cruise
已经支持分阶段执行,因此我们不希望在
integration-test
阶段重复进行
unit-test
,因此,在
utest
目标中,使用了
${skiput}
变量来由命令行传入
unit-test
开关。

Selenese

除了使用
surefire

junit
调用,我们还可以使用
selenium-maven-plugin

selenese
目标,它可以脱离
junit
,直接使用浏览器端的
selenium
测试代码进行集成测试。



详细参考:
http://wiki.foochal.org/index.php/Maven_Selenium

标签:
文章分类 FK Coding

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

点赞
如果您觉得很赞,我将非常乐意接受虚拟币的捐赠,以示您对我的肯定。

比特币钱包地址:
1PqpqA8FyH3NbfCrbcRd1YxQk3LEsSEYDV
莱特币钱包地址:
LRTdmovGGVEHCKWz7JdL9aiB7VZkuNycJf
站点勋章
网站统计