加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

连续集成 – 如何在无头环境中测试JavaFX 2?

发布时间:2020-12-14 05:45:37 所属栏目:Java 来源:网络整理
导读:我试图通过集成的 JavaFX 2.2自动测试在 Java 7u6上运行的JavaFX 2应用程序. 为此,我将 Jemmy3和 JemmyFX建成并整合到我的构建环境中. 一个简单的烟雾测试运行在所有相关的操作系统. 作为下一步,我想运行测试作为持续部署过程的一部分. 由于目前的CI服务器运
我试图通过集成的 JavaFX 2.2自动测试在 Java 7u6上运行的JavaFX 2应用程序.
为此,我将 Jemmy3和 JemmyFX建成并整合到我的构建环境中.
一个简单的烟雾测试运行在所有相关的操作系统.

作为下一步,我想运行测试作为持续部署过程的一部分.
由于目前的CI服务器运行在JavaFX尚未正式支持的OpenSUSE上,
我已经在虚拟机中安装了Ubuntu Server,并安装了gtk2.
为了弥补缺乏完全开放的窗口系统,我已尝试在Xvnc和Xvfb上运行测试,但无济于事.

在Xvnc上,测试失败

Prism ES2 Error - nInitialize: glXChooseFBConfig failed

而在Xvfb,他们给我

Xlib:  extension "RANDR" missing on display ":10".

一个blog post建议安装gtk-engines-pixbuf来缓解第二个问题,但这只会改变错误信息中的显示数量.

现在,我召唤JavaFX对StackOverflow的知识,并询问

>你知道如何解决上述错误吗?
>您是否在(无头)CI服务器上成功运行JavaFX 2测试或机器人交互?
>您如何配置该系统以使其正常工作?

解决方法

JavaFX 8支持(无头)CI服务器测试JavaFX.

根据这些JavaFX问题跟踪记录中的信息进行回答:

> JDK-8088651“无头玻璃工具包需要连接到量子和棱镜单元测试”
> JDK-8091286“量子需要无头和头痛的测试”).

更新2015年1月8日

链接的JavaFX问题跟踪记录未针对Java 8实现,并已重新分配给Java 9.

Java 8源代码目前包括一个名为Monocle的最小渲染引擎,它为JavaFX组件提供无头渲染(并为各种其他目标平台呈现).我从来没有使用过Monocle,不能提供有关如何使用它来进行无头渲染的详细说明.我相信使用Monocle,您目前需要从源代码执行JavaFX的自定义构建(因为我认为Monocle通常仅在嵌入式JavaFX版本中发布,这不是桌面Java运行时和JDK环境附带的标准JavaFX版本) .

有关Monocle的信息可在JavaFX wiki获取.

虽然,Monocle提供无头渲染,但是我并不认为使用Monocle来执行无头渲染是由Oracle正式支持的(虽然我不认为任何形式的JavaFX的无头渲染都得到官方的支持,所以我想如果Monocle工作得很好对于你,一切都使用它).

Monocle中的无头渲染是一种软件渲染实现,因此一些图形原语的执行可能比桌面环境中JavaFX的标准硬件加速操作更慢.

可能还有其他方法允许JavaFX在无法识别的无头环境中运行.

如果有疑问,请在openjfx-dev mailing list上询问JavaFX开发人员.

如果您在Linux下运行,则使用Jan Zarnikov的回答建议使用Xvfb可能是一个很好的解决方案,可能更适合使用Monocle.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读