测试 远程测试

在远程系统上运行 JUnit 测试

  1. 简介
  2. 有用参数
  3. 运行样式

简介

本文档介绍如何在远程系统上运行 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