我可以使用 TestFX 和 JUnit 测试阶段按钮或警报对话框吗?

Can I test stage buttons or Alert dialog with TestFX and JUnit?

我正在做一个测试 class 验证我的 window 中的一些东西,我想知道我是否可以测试阶段按钮(比如知道 window 是否可以调整大小,如果我点击关闭请求会发生什么,...)。

Scene scene = new Scene(root);
    //Stage Properties
    stage.setScene(scene);
    stage.setTitle("LogIn");
    stage.setResizable(false);
    stage.setOnShowing(this::handleWindowShowing);
    stage.setOnCloseRequest(this::closeRequest);

我真的迷失了,因为我不知道如何测试它,包括相应的警报,例如当我单击关闭请求时,向我显示一个模态警报,询问他是否确定使用两个按钮。

public void closeRequest(WindowEvent event) {
    Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
    alert.setHeaderText("Close confirmation");
    alert.setTitle("Exit Window");
    alert.setContentText("Are you sure that want close the application?");
    alert.initOwner(stage);
    alert.initModality(Modality.WINDOW_MODAL);
    Optional<ButtonType> result = alert.showAndWait();
    if (result.get() == ButtonType.OK) {
        stage.close();
        Platform.exit();
    } else
        event.consume();
}

这可能吗?我怎样才能测试它?
感谢您的帮助。

我认为您无法验证关闭和最小化 windows 按钮,因为它们是由 OS 而不是 JavaFX 制作的。

但是 "Alert" 很容易验证 — 尽管在单独的 windows:

中,您可以要求 TestFX 使用它
verifyThat("OK", NodeMatchers.isVisible());
verifyThat("Cancel", NodeMatchers.isVisible());

如果您想确定这些元素来自警报页面,您可以先尝试查找它。例如,这里是对警报文本的检查:

Node dialogPane = lookup(".dialog-pane").query();
from(dialogPane).lookup((Text t) -> t.getText().startsWith("Are you sure"));