如何在 TestFX 4 中做到这一点?
How to do it in TestFX 4?
我有一个关于 testFx 4 的问题。
有一个 GUI 对象,我想在其中将文本设置为 TextField ("#searchField")。
它在 TestFx 3 中的工作方式如下:
//Load FXML
@Override
protected Parent getRootNode() {
Parent parent = null;
try {
FXMLLoader loader = new FXMLLoader();
loader.setResources(ResourceBundle.getBundle(ENTITIES_FIELDS_BUNDLE_PATH, Locale.GERMANY));
parent = loader.load(this.getClass().getClassLoader().getResource(SHOW_ALL_LAYOUT_PATH).openStream());
} catch (IOException ex) {}
return parent;
}
//Set text into Field and check it's there
@Test
public void setBothnamesAndCheckEnabledSearchButton() {
TextField searchField = find("#searchField");
searchField.setText("new text");
verifyThat("#searchField", hasText("new text"));
}
所以,一切正常。
TestFx 4 中 100% 相同的情况:
@Override
public void start(Stage stage) throws Exception {
try {
FXMLLoader loader = new FXMLLoader();
loader.setResources(ResourceBundle.getBundle(ENTITIES_FIELDS_BUNDLE_PATH, Locale.GERMANY));
AnchorPane pane = (AnchorPane)loader.load(this.getClass().getClassLoader().getResource(SHOW_ALL_LAYOUT_PATH).openStream());
Scene scene = new Scene(pane);
stage.setScene(scene);
} catch (IOException ex) {}
}
@Test
public void setBothnamesAndCheckEnabledSearchButton() {
clickOn("#searchField").write("new text");
verifyThat("#searchField", hasText("new text"));
}
我变得总是 "FxRobotException: the query "#searchField" 没有返回任何节点。所以他没有 "see" 相同的 TextField...
我做错了什么?我确定这是我看不到的非常愚蠢的东西......有人可以帮助我吗?谢谢!
所以我终于找到了答案:我应该在覆盖 start()
方法的末尾调用 stage.show()
。 testFX 没有找到任何不可见的组件...
我有一个关于 testFx 4 的问题。 有一个 GUI 对象,我想在其中将文本设置为 TextField ("#searchField")。
它在 TestFx 3 中的工作方式如下:
//Load FXML
@Override
protected Parent getRootNode() {
Parent parent = null;
try {
FXMLLoader loader = new FXMLLoader();
loader.setResources(ResourceBundle.getBundle(ENTITIES_FIELDS_BUNDLE_PATH, Locale.GERMANY));
parent = loader.load(this.getClass().getClassLoader().getResource(SHOW_ALL_LAYOUT_PATH).openStream());
} catch (IOException ex) {}
return parent;
}
//Set text into Field and check it's there
@Test
public void setBothnamesAndCheckEnabledSearchButton() {
TextField searchField = find("#searchField");
searchField.setText("new text");
verifyThat("#searchField", hasText("new text"));
}
所以,一切正常。
TestFx 4 中 100% 相同的情况:
@Override
public void start(Stage stage) throws Exception {
try {
FXMLLoader loader = new FXMLLoader();
loader.setResources(ResourceBundle.getBundle(ENTITIES_FIELDS_BUNDLE_PATH, Locale.GERMANY));
AnchorPane pane = (AnchorPane)loader.load(this.getClass().getClassLoader().getResource(SHOW_ALL_LAYOUT_PATH).openStream());
Scene scene = new Scene(pane);
stage.setScene(scene);
} catch (IOException ex) {}
}
@Test
public void setBothnamesAndCheckEnabledSearchButton() {
clickOn("#searchField").write("new text");
verifyThat("#searchField", hasText("new text"));
}
我变得总是 "FxRobotException: the query "#searchField" 没有返回任何节点。所以他没有 "see" 相同的 TextField...
我做错了什么?我确定这是我看不到的非常愚蠢的东西......有人可以帮助我吗?谢谢!
所以我终于找到了答案:我应该在覆盖 start()
方法的末尾调用 stage.show()
。 testFX 没有找到任何不可见的组件...