在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值