当我尝试对包含 JavaFX 控件的组件执行单元测试时,我得到一个
java.lang.IllegalStateException: Toolkit not initialized
。
如何对使用 JavaFX 控件操作的组件进行单元测试?
只需声明并初始化一个JFX面板。喜欢:
@Test
public void test() throws Exception {
JFXPanel fxPanel = new JFXPanel();
[.. Begin tests ..]
}
这是最简单的方法...
将以下依赖项添加到您的项目中
<dependency>
<groupId>de.saxsys</groupId>
<artifactId>jfx-testrunner</artifactId>
<version>1.2</version>
</dependency>
以及您的测试类的以下注释
@RunWith(JfxRunner.class)
没有任何额外的依赖:
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 {
// ...
}