JavaFX:如何在没有测试阶段的情况下显示警报?
我使用JavaFX作为GUI,它等待一些用户的输入并尝试处理这些输入。如果出现任何异常,将打开javafx.scene.control.Alert向用户显示异常。该警报的调用在处理异常的方法中完成 这个方法应该被测试:对于一个特殊的输入,检查是否抛出了正确的异常。正确的异常实际上被抛出,处理方法被调用,但现在问题来了:在测试用例中没有实际的应用程序运行,也没有创建任何阶段。显然,正因为如此,警报对话框的创建引发了异常:JavaFX:如何在没有测试阶段的情况下显示警报?,java,user-interface,exception,javafx,Java,User Interface,Exception,Javafx,我使用JavaFX作为GUI,它等待一些用户的输入并尝试处理这些输入。如果出现任何异常,将打开javafx.scene.control.Alert向用户显示异常。该警报的调用在处理异常的方法中完成 这个方法应该被测试:对于一个特殊的输入,检查是否抛出了正确的异常。正确的异常实际上被抛出,处理方法被调用,但现在问题来了:在测试用例中没有实际的应用程序运行,也没有创建任何阶段。显然,正因为如此,警报对话框的创建引发了异常: java.lang.IllegalStateException: Toolk
java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:273)
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:268)
at com.sun.javafx.application.PlatformImpl.setPlatformUserAgentStylesheet(PlatformImpl.java:550)
at com.sun.javafx.application.PlatformImpl.setDefaultPlatformUserAgentStylesheet(PlatformImpl.java:512)
at javafx.scene.control.Control.<clinit>(Control.java:87)
... 46 more
java.lang.IllegalStateException:工具包未初始化
位于com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:273)
位于com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:268)
位于com.sun.javafx.application.PlatformImpl.setPlatformUserAgentStylesheet(PlatformImpl.java:550)
位于com.sun.javafx.application.PlatformImpl.setDefaultPlatformUserAgentStylesheet(PlatformImpl.java:512)
位于javafx.scene.control.control.(control.java:87)
... 46多
这会导致测试失败,因为现在会引发另一个不正确的异常
那么:有没有办法在没有舞台的情况下显示警报 我很确定你不用舞台就能发出警报。你能提供一些你的代码吗?我希望它有点像这样:你能提供一些代码吗?我想你有这样的东西吗?}catch(异常e){Alert Alert=new Alert(Alert.AlertType.ERROR);Alert.setTitle(“此处的错误标题”);Alert.setContentText(“某些内容”);Alert.show();}@Jouke请不要在注释中发布代码。这与是否显示
阶段
无关:错误表明JavaFX工具包尚未初始化Application.launch()
需要被调用才能发生这种情况(在实例化JFXPanel
时,可以使用一种变通方法,但这感觉有点脆弱)。我的答案(这是一个完全不同的问题)有一个启动FX应用程序的机制,它除了启动FX工具包外,基本上什么都不做。我很确定你可以在没有阶段的情况下调用警报。你能提供一些你的代码吗?我希望它有点像这样:你能提供一些代码吗?我想你有这样的东西吗?}catch(异常e){Alert Alert=new Alert(Alert.AlertType.ERROR);Alert.setTitle(“此处的错误标题”);Alert.setContentText(“某些内容”);Alert.show();}@Jouke请不要在注释中发布代码。这与是否显示阶段
无关:错误表明JavaFX工具包尚未初始化Application.launch()
需要被调用才能发生这种情况(在实例化JFXPanel
时,可以使用一种变通方法,但这感觉有点脆弱)。我的答案(这是一个完全不同的问题)有一个启动FX应用程序的机制,它基本上除了启动FX工具包之外什么都不做。