对 JavaFX 应用程序进行单元测试时出现“工具包未初始化”异常

问题描述 投票:0回答:3

当我尝试对包含 JavaFX 控件的组件执行单元测试时,我得到一个

java.lang.IllegalStateException: Toolkit not initialized

如何对使用 JavaFX 控件操作的组件进行单元测试?

java unit-testing javafx-8
3个回答
12
投票

只需声明并初始化一个JFX面板。喜欢:

@Test
public void test() throws Exception {
    JFXPanel fxPanel = new JFXPanel();
    [.. Begin tests ..]
}

这是最简单的方法...


7
投票

将以下依赖项添加到您的项目中

<dependency>
  <groupId>de.saxsys</groupId>
  <artifactId>jfx-testrunner</artifactId>
  <version>1.2</version>
</dependency>

以及您的测试类的以下注释

@RunWith(JfxRunner.class)

4
投票

没有任何额外的依赖:

import javafx.application.Platform

@BeforeAll
static void initJfxRuntime() {
    Platform.startup(() -> {});
}

此调用启动 JavaFX 运行时。

您可以进一步使用此方法声明一个抽象类:

abstract class FxTest {
    @BeforeAll
    static void initJfxRuntime() {
        Platform.startup(() -> {});
    }
}

然后在测试 JavaFX 运行时所需的东西时继承它:

class SomeGuiTest extends FxTest {
    // ...
}
© www.soinside.com 2019 - 2024. All rights reserved.