在 Jenkins 上 运行 TestFX 时如何避免 HeadlessException?
How to avoid HeadlessException when running TestFX on Jenkins?
我正在编写一个 TestFX 测试用例来覆盖 Java 桌面应用程序。其中一个交互调用 showDocument() 以使用浏览器显示 html 文档。当 运行 使用 Gradle 在本地测试时,我的测试工作正常。但是当我 运行 在 Jenkins 上(使用 MacOS 代理)测试失败时。
14:55:10 java.awt.HeadlessException
14:55:10 at java.desktop/java.awt.Desktop.getDesktop(Desktop.java:301)
14:55:10 at javafx.graphics/com.sun.javafx.application.HostServicesDelegate$StandaloneHostService.showDocument(HostServicesDelegate.java:133)
14:55:10 at javafx.graphics/javafx.application.HostServices.showDocument(HostServices.java:115)
Desktop检查GraphicsEnvironment.isHeadless()
时出现问题
为什么会出现这个错误?我读到当没有可使用的 GUI(显示器、键盘、鼠标)时会发生 HeadlessException,但我的代理确实有 GUI。此测试在 Windows 代理上正常工作,但在 MacOS 上不正常。如何避免此错误并在 Jenkins 上执行自动化测试?
解决方案是更改 Jenkins 上的节点启动方法。他们使用 SSH 连接并将其更改为连接到主站解决了问题(ssh 不通过 GUI 并直接将其连接到主站)。
我正在编写一个 TestFX 测试用例来覆盖 Java 桌面应用程序。其中一个交互调用 showDocument() 以使用浏览器显示 html 文档。当 运行 使用 Gradle 在本地测试时,我的测试工作正常。但是当我 运行 在 Jenkins 上(使用 MacOS 代理)测试失败时。
14:55:10 java.awt.HeadlessException
14:55:10 at java.desktop/java.awt.Desktop.getDesktop(Desktop.java:301)
14:55:10 at javafx.graphics/com.sun.javafx.application.HostServicesDelegate$StandaloneHostService.showDocument(HostServicesDelegate.java:133)
14:55:10 at javafx.graphics/javafx.application.HostServices.showDocument(HostServices.java:115)
Desktop检查GraphicsEnvironment.isHeadless()
时出现问题为什么会出现这个错误?我读到当没有可使用的 GUI(显示器、键盘、鼠标)时会发生 HeadlessException,但我的代理确实有 GUI。此测试在 Windows 代理上正常工作,但在 MacOS 上不正常。如何避免此错误并在 Jenkins 上执行自动化测试?
解决方案是更改 Jenkins 上的节点启动方法。他们使用 SSH 连接并将其更改为连接到主站解决了问题(ssh 不通过 GUI 并直接将其连接到主站)。