10

我正在尝试使用集成的JavaFX 2.2在Java 7u6上运行的JavaFX 2应用程序的自动化测试。 为此,我已经构建并将Jemmy3JemmyFX集成到我的构建环境中。 简单的烟雾测试可在所有相关的操作系统上运行。如何在无头环境中测试JavaFX 2?

作为下一步,我想运行测试作为持续部署过程的一部分。 由于当前的CI服务器运行在OpenSUSE上,而JavaFX没有正式支持,所以我在虚拟机中安装了Ubuntu Server安装并安装了gtk2。
为了弥补缺乏完善的窗口系统,我尝试在XvncXvfb上运行测试,但都无济于事。

的Xvnc,测试失败,

Prism ES2 Error - nInitialize: glXChooseFBConfig failed 

而在的Xvfb,他们给我

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

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

现在,我召唤StackOverflow上的JavaFX的知识,并要求

  • 你知道如何解决上述的错误?
  • 您是否在(无头)CI服务器上成功运行了JavaFX 2测试或机器人交互?
  • 你是如何配置该系统才能使其工作的?
+1

我猜测对JavaFX的(无头)CI服务器测试的支持在JavaFX 8(基于[这些](http://javafx-jira.kenai.com/browse/RT-20494)[ jiras](http://javafx-jira.kenai.com/browse/RT-20510))。也许JavaFX QA团队的Sergey可能知道更多,他有时会回顾这个Q/A网站。 – jewelsea

+0

除非Sergey出现一些完全不同的答案,否则我愿意接受这个事实,如果您将其作为答案提交。 –

+0

好吧,让它成为答案。 – jewelsea

回答

6

直到JavaFX的8

答案基于这些JavaFX的问题跟踪记录的信息支持(无头)的JavaFX的CI服务器测试不可用:

  • 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在我不知道的无头环境中运行。

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

如果你在Linux下运行,使用Jan Zarnikov的答案中提出的Xvfb可能是一个很好的解决方案,可能更适合使用Monocle。

+0

现在可以使用JavaFX 8更新此答案吗? –

+0

更新的答案提供了我所知道的最新信息。 – jewelsea

+0

[This answer](http://stackoverflow.com/a/29919290/1212960)表明Monocle可作为附加依赖。 –

12

我有一个类似的问题 - 在Maven的无头环境中运行JUnit测试。

我们不使用JemmyFX。我们只是使用类似一个JUnit的规则非常简单的测试: https://gist.github.com/andytill/3835914 (这需要使用Platform.runLater(...)代码)

当前的JavaFX版本(与JDK 1.7提供。 0-21)似乎Xvfb来是工作在Ubuntu 12.04没有运行的Xserver:

  1. Xvfb :99
  2. DISPLAY=:99 mvn clean install
+0

谢谢,它的工作原理。 – gontard

相关问题