2

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

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

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

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();
}

这可能吗?我该如何测试它?
谢谢您的帮助。

4

1 回答 1

2

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

但是“警报”很容易验证——尽管在单独的窗口中,你也可以要求 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"));
于 2019-12-03T07:40:20.830 回答