【问题标题】:RobotFramework + SwingLibrary: Tests don't work over SSHRobotFramework + SwingLibrary:测试不适用于 SSH
【发布时间】:2017-04-29 06:51:25
【问题描述】:

这是一个痛苦的问题。我有一个 Java Swing 应用程序,我正在尝试使用带有 SwingLibrary 的 Robot Framework 进行测试。我在 Vagrant 盒子里做所有事情。我有一个这样的运行脚本,它将开始测试:

export CLASSPATH=swinglibrary-1.8.0.jar:echoapp.jar
export JAVA_OPTS="-Djava.awt.headless=true"
jython `which robot` --loglevel DEBUG test.robot

当我在 VM 中运行该脚本时,它运行良好。但是如果我通过 SSH 运行它,我就不能让它正常工作。我看到以下错误消息:

[ ERROR ] Error in file '/vagrant/robotTests/test.robot': Getting keyword 
names from library 'SwingLibrary' failed: Calling dynamic method 
'getKeywordNames' failed: ExceptionInInitializerError

我完全糊涂了。我最初以为是 X11 的问题,但后来我打开了 X11 转发,用 Putty 连接到 Vagrant 盒子,并让应用程序出现在 X11 窗口中。

谷歌搜索错误并没有太大帮助。任何事,有人吗?在这个问题上我很痛苦。

【问题讨论】:

  • 运行jython进程的机器是否也安装了swing库?
  • 是的。我可以使用 VirtualBox GUI 登录 VM,然后运行脚本。 VM 已安装 jython、机器人框架和 swing 库。

标签: java swing ssh vagrant robotframework


【解决方案1】:

好的,这就是我的问题所在。尽管设置了 X11 转发,但 X 服务器不合作。因为无论如何我都准备在 Jenkins 中运行这些测试,所以从长远来看这对我没有帮助——我需要一个替代的 X 服务器。

幸运的是,我不是第一个尝试 GUI 测试的人。事实证明,有一个设计用于无头系统的 X 服务器,称为 X 虚拟帧缓冲区 (Xvfb)。来自the Wikipedia article

Xvfb 或 X 虚拟帧缓冲区是实现 X11 显示服务器协议的显示服务器。与其他显示服务器相比,Xvfb 在内存中执行所有图形操作,而不显示任何屏幕输出。从客户端的角度来看,它的行为与任何其他 X 显示服务器完全一样,为请求提供服务并根据需要发送事件和错误。但是,没有显示输出。此虚拟服务器不需要运行它的计算机具有屏幕或任何输入设备。只需要一个网络层。

在 CentOS/RHEL 上,xorg-x11-server-Xvfb 软件包在默认存储库中可用。

Available Packages
Name        : xorg-x11-server-Xvfb
Arch        : x86_64
Version     : 1.17.2
Release     : 22.el7
Size        : 843 k
Repo        : base/7/x86_64
Summary     : A X Windows System virtual framebuffer X server.
URL         : http://www.x.org
License     : MIT and GPLv2
Description : Xvfb (X Virtual Frame Buffer) is an X server that is able to run on
            : machines with no display hardware and no physical input devices.
            : Xvfb simulates a dumb framebuffer using virtual memory.  Xvfb does
            : not open any devices, but behaves otherwise as an X display.  Xvfb
            : is normally used for testing servers.

要安装它:

sudo yum -y install xorg-x11-server-Xvfb

完成后,我可以使用xvfb-run 命令在我的环境中运行我的shell 脚本。

[vagrant@localhost robotTests]$ xvfb-run ./run.sh
==============================================================================
Test
==============================================================================
Test <Redacted One>                                                   | PASS |
------------------------------------------------------------------------------
Test <Redacted Two>                                                   | PASS |
------------------------------------------------------------------------------
Test <Redacted Three>                                                 | PASS |
------------------------------------------------------------------------------
Test                                                                  | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================
Output:  /vagrant/robotTests/output.xml
Log:     /vagrant/robotTests/log.html
Report:  /vagrant/robotTests/report.html

【讨论】:

    猜你喜欢
    • 2014-04-09
    • 2014-11-04
    • 2021-12-17
    • 1970-01-01
    • 2015-03-12
    • 2018-06-09
    • 1970-01-01
    • 2022-11-24
    • 2020-09-20
    相关资源
    最近更新 更多