测试 远程测试
在远程系统上运行 JUnit 测试
简介
本文档介绍如何在远程系统上运行 GWT 测试。
有三种类型的远程运行样式可以帮助你运行远程测试
- 手动
- Selenium
- RemoteWeb
要使用任何这些运行样式,你需要将 -runStyle
参数传递给测试基础设施(请参见 向测试基础设施传递参数)。格式如下(请参见下面的具体示例)
-runStyle <NameStartingWithCaps>:arguments
如果你从 Eclipse 运行测试,你将在 VM 参数中添加类似以下内容(注意运行样式名称以大写字母开头)
-Dgwt.args="-runStyle Selenium:myhost:4444/*firefox"
有用参数
以下参数在运行远程测试时很有用。
-prod
如果你不熟悉开发模式与生产模式,你应该首先阅读 编译和调试 中相关的教程。以下所有示例都假定你正在开发模式下运行测试,这要求你安装了 GWT 开发者插件。需要注意的是,必须将 URL 列入白名单才能使此插件连接到这些 URL。这意味着你必须在首次运行测试时,或最好提前在远程系统上允许远程连接。
默认情况下,测试在开发模式下运行。你可以通过将 -prod
添加到 GWT 参数来在生产模式下运行测试。在生产模式下运行测试时,你不需要在远程系统上安装 GWT 开发者插件。
-Dgwt.args="<strong>-prod</strong> -runStyle Selenium:myhost:4444/*firefox"
-userAgents
在生产模式下运行测试时,GWT 会为所有浏览器编译测试,这可能需要一些时间。如果你知道你的测试将在哪些浏览器中运行,你可以使用 -userAgents
参数限制浏览器排列(并减少编译时间)
-Dgwt.args="-prod <strong>-userAgents ie6,gecko1_8</strong> -runStyle Selenium:myhost:4444/*firefox"
运行样式
手动
手动运行样式允许你通过将浏览器指向 GWT 提供的 URL 来在任何浏览器中运行 JUnit 测试。有关详细信息,请参见 在手动模式下运行测试。特别是,手动模式可用于远程测试——浏览器可以在与测试启动位置不同的计算机上运行。
Selenium
推荐用于 Firefox、Safari、Google Chrome 和 Internet Explorer(请参见注释)。
Internet Explorer:你可以尝试在 Selenium 中运行 Internet Explorer,因为它是一个受支持的浏览器。如果测试对你有效,那么你根本不需要使用 RemoteWeb 运行样式,这将简化你的测试。但是,我们发现 Selenium 并不总是能够在较新版本的 Windows 上成功打开 Internet Explorer。如果发生这种情况,你可以尝试将 -singleWindow
参数传递给 Selenium。
GWT 可以针对运行 Selenium 远程控制 的远程系统执行测试。你可以使用以下命令来实现这一点
-Dgwt.args="-runStyle Selenium:myhost:4444/*firefox,myotherhost:4444/*firefox"
在上面的示例中,我们使用 Selenium 运行样式针对两个远程系统(myhost 和 myotherhost)上的 Firefox 执行开发模式测试。
注意:在较新版本的 Windows 上,如果你以管理员身份运行 Selenium,你将不会在开发模式下运行测试,因为 GWT 开发者插件仅针对当前用户安装。
Firefox 配置文件
默认情况下,Selenium 会创建一个新的 Firefox 配置文件,以防止不必要的弹出窗口,这些弹出窗口会干扰测试。但是,你可能需要创建自己的包含 GWT 开发者插件的 Firefox 配置文件。
为此,请从命令行运行 Firefox 并传递 -ProfileManager
参数以打开配置文件管理器
firefox.exe -ProfileManager
创建一个新配置文件(记住位置)并打开它。按照自己的意愿设置配置文件,确保安装了 GWT 开发者插件。在我们的测试系统中,我们使用以下设置
- 设置空白主页
- 编辑 -> 首选项 -> 常规
- 将“Firefox 启动时”设置为“显示空白页面”
- 禁用警告
- 编辑 -> 首选项 -> 安全
- 在“警告消息”下,单击“设置”
- 取消选中所有警告
- 禁用自动更新
- 编辑 -> 首选项 -> 高级 -> 更新
- 取消选中所有自动更新
- 禁用会话恢复
- 在浏览器栏中键入'about:config'
- 找到 browser.sessionstore.resume_from_crash 并将其设置为 false
- 找到 browser.sessionstore.enabled 并将其设置为 false(如果存在)
- 安装 Firebug(用于调试)
- 安装 GWT 开发者插件
- 将要启动开发模式代码服务器的主机列入白名单。由于 Selenium 为每个测试复制配置文件,因此你必须立即执行此操作。如果你没有这样做,你将必须为每次测试都允许远程连接!
- 重启 Firefox
- 工具 -> 附加组件
- 选择 Firefox 的 GWT 开发者插件
- 单击“选项”
- 添加你想要允许插件连接到的IP 地址。
启动 Selenium 服务器时,传递以下参数以使用你的 Firefox 配置文件作为模板
--firefoxProfileTemplate /path/to/profile
远程 Web
已弃用。将在 GWT 2.7 中删除。
RemoteWeb 运行样式允许你针对运行 BrowserManagerServer 的系统运行测试,BrowserManagerServer 是 GWT 提供的服务器。
首先,你需要在远程测试系统上使用以下 java 命令启动 BrowserManagerServer。注意,gwt-user.jar 和 gwt-dev.jar 在类路径上。
java -cp gwt-user.jar;gwt-dev.jar com.google.gwt.junit.remote.BrowserManagerServer ie8 "C:\Program Files\Internet Explorer\IEXPLORE.EXE"
BrowserManagerServer 接受成对的命令。在上面的示例中,我们将名称“ie8”与可执行文件 iexplore.exe 关联。
<browser name> <path/to/browser>
要针对 IE8 运行测试,你将使用以下参数
-runStyle RemoteWeb:rmi://myhost/ie8