我可以使用 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"));
我正在做一个测试 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"));