Luca Vix Visconti, CEO, Open Gate S.r.l.
Last Update: November 25, 2008
原文地址:
http://www.zkoss.org/smalltalks/zkunittesting/
版本
适用与任何版本.ZK 3.0.x 和 3.5.x经过测试。
背景
应用中运行自动化测试是开发出一个高质量的企业应用的保证。在这篇文章中,我们将介绍一种使用Selenium和JUnit测试ZK程序的简单方法。我们以测试ZK Demo为例。
准备
我们假设你已经安装了Eclipse 3.X和Firefox
介绍
Selenium是一个测试套件。它由一个单元测试运行部分Selenium Remote Control,一些客户端的语言库,firefox的宏插件以及一个可视化的eclipse插件组成。 Selenium Remote Control是一个服务器端,它会等待客户端发送过来的命令,并根据命令控制浏览器来运行相应的web程序。这里我们将解释如何启动Selenium Remote Control以及使用java编写一个简单的客户端来测试ZK demo的一些特性。Firefox的Selenium IDE对一步步的测试你的宏很有帮助。
获得软件
要下载selenium请访问
Selenium Remote Control 下载页面,并下载最新版本。在SELENIUM_HOME目录下解压缩文件。
要为你的Firefox安装Selenium IDE,请访问
addon网站,按一般流程来下载安装addons.
我们还需要JUnit,你在从
Sourcefoge Junit page下载。
启动Selenium Remote Control
到SELENIUM_HOME/selenium-server-1.0-beta-1/ 目录下,并运行
java -jar selenium-server.jar
配置Firefox
Selenium Remote Control以代理的方式运行,所以,如果要使所有的测试能运行,你必须要设置浏览器的代理。创建一个如下所示的proxy.pac文件。到 Preferences > Advanced > Network > Settings 并设置自动代理配置的url为 file:///path/to/your/proxy.pac
对于windows下使用IE的用户,你必须要去掉一个斜杠,像这样
file://path/to/your/proxy.pac
proxy.pac
function FindProxyForURL(url, host) {
if ( shExpMatch(url,"*selenium-server*") ) {
return "PROXY localhost:4444; DIRECT"; //The Selenium Remote Control
} else {
if ( shExpMatch(host,"localhost") ) {
return "DIRECT";
} else {
return "PROXY your.proxy.com:proxyport; DIRECT"; // or DIRECT like localhost if you have no proxy
}
}
}
保证访问下面的例子网址时都能流畅的运行,http://google.com和 http://google.com/selenium-server.如果一切OK,你会看到下面的错误信息。
HTTP ERROR: 404
/selenium-server/ Not Found
RequestURI=/selenium-server/
Powered by Jetty://
你需要到about:config下(地址栏内输入 about:config),将browser.sessionstore.resume_from_crash 属性设置为false.
创建测试程序
打开eclipse创建一个java工程。创建一个lib文件夹并导入需要的库:
* SELENIUM_HOME/selenium-java-client-driver-1.0-beta-1下的selenium-java-client-driver.jar
* 从sourceforge下载的junit-3.8.1.jar
接着选择这个库,右击并选择Build Path > Add to Build Path
在src下,默认包内创建一个新类ZKDemoTest粘帖下面的代码:
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
public class ZkDemoTest extends SeleneseTestCase {
@Override
public void setUp() throws Exception {
setUp("http://www.zkoss.org/", "*custom /usr/bin/firefox");
}
@Override
public void tearDown() throws Exception {
super.tearDown();
selenium.stop();
}
public void testNew() throws Exception {
selenium.open("/zkdemo/userguide/");
selenium.click("//div[text()='Paging']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if (selenium.isElementPresent("//h4[text()='Listboxes with paging control']")) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.click("//button[@class='z-paging-next']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if ("2".equals(selenium.getValue("//input[@class='z-paging-inp']"))) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.click("//button[@class='z-paging-next']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if ("3".equals(selenium.getValue("//input[@class='z-paging-inp']"))) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.click("//button[@class='z-paging-next']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if ("4".equals(selenium.getValue("//input[@class='z-paging-inp']"))) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.click("//div[text()='The onChanging event']");
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try {
if (selenium.isElementPresent("//h4[text()='The onChanging event']")) break;
} catch (Exception e) {}
Thread.sleep(1000);
}
selenium.type("//span[text()='onChanging textbox: ']//../../..//input", "testme");
Thread.sleep(1000);
assertEquals("testme", selenium.getValue("//span[text()='instant copy: ']//../../..//input"));
}
}
setUp方法定义了站点的url和浏览器。IE用户使用IE的路径替换第二个参数即可。
要运行测试,右击ZkDemoTest.java并选择Run As > JUnite Test
编写你自己的测试代码
为了简化你自己的测试代码你可以使用Selenium IDE.
在安装了前面所说的插件后,你可以使用Firefox到你想测试的站点
并打开IDE。( Tools > Selenium IDE ).
在base URL一栏输入web应用的地址并点击录制按钮(在顶部右端的红色按钮)
在你录制了一些命令后,你可能需要编辑它们。Selenium和其他测试套件一样,使用组件的ID辨认组件。如果你使用元数据绑定,记得在使用了类型命令后执行onBlur事件。如果你想修改你的zk组件去包含一个z.id属性,修改html元素为如下形式//element[@z.id='myZkId']
你编辑完之后可以到Options > Format > Java - Selenium RC并将结果粘帖到你的java类里面。
- 大小: 96 KB
- 大小: 26.7 KB
分享到:
相关推荐
For security reasons, ZK generates ID randomly. However to perform a record & reply test, it is mandatory to fix the IDs of the components. The IdGenerator here is used to create a predictable ...
zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架 zk web框架
zk后台api很全的,对于学习ZK很有用的。
ZK开发手册 ZK开发手册 ZK开发手册 ZK开发手册 ZK开发手册
zk-6.5.0.zip ZK 6.5.0 Sep 12, 2012 * Features ZK-447: The file upload allows users to drag and drop local files (HTML5) ZK-1241: ZK Client Widget support swipe event for tablet/mobile device ZK-...
最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC最新版 ZK SRC
ZK 8.0.0端参考 ZK 8.0.0组件开发的必需品 ZK 8.0.0组件引用 ZK 8.0.0配置参考 ZK 8.0.0开发人员的参考 ZK 8.0.0风格定制指南 ZK 8.0.0 ZUML参考 zk-mvvm-book
ZK包括一个基于AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface Markup Language,ZK用户界面标记语言)的标记语言。 有了ZK,您可以利用XUL和XHTML的丰富特性来呈现您的...
Librerias ZK 32 Bits Windows
最新的zk核心jar用到zk的可以下载很实用的东西
ZK 5.0.5 Component Reference ZK 5.0.5 Configuration Reference ZK 5.0.5 Style Guide ZK 5.0.5 ZUML Reference
ZK资料学习zk框架的助手,带你步入zk的殿堂。。。。。
zk的chm版的api英文帮助文档. 本人自己制作的。 zk是台湾的一个纯ajax框架。
zk studion plugins zk studion plugins
ZK Eclipse插件 解压至文件夹,如D:\Program Files\MyEclipse 8.5\zkstudio 在Eclipse安装目录下的dropins目录添加link文件如,zk.link,文件内容如下: path=D:\\Program Files\\MyEclipse 8.5\\zkstudio
ZK4500、中控指纹仪、SDK开发包带各种语言的demo
zk从版本3.4.9升级到3.5.5详细笔记文档总结
SIMPLY RICH ZKTM The Developer's Reference Version 3.0.1 ZK的介绍,功能、组建的使用...
zk项目搭建文档,用于zk项目的mvvm模式的 开发 项目。
zk studion plugins zk studio eclipse plugin