如何使用 TestFX 使用 JavaFXML 测试场景的内容
How to use TestFX to test a scene's contents using JavaFXML
我想知道在使用 TestFX 时我应该如何测试 JavaFXML 中某些场景的内容。
示例包括这些 link:
https://github.com/TestFX/TestFX/blob/master/subprojects/testfx-junit5/src/test/java/org/testfx/framework/junit5/ApplicationRuleTest.java
https://medium.com/@mglover/java-fx-testing-with-testfx-c3858b571320
第一个link在测试class中构建场景,后者使用存储在其自身class中的预定义场景。
当使用 JavaFXML 而不是 JavaFX 时,我应该如何做类似的事情,其中场景的结构是在 fxml 文件而不是 java 代码中定义的?
第一步是在您的 fxml 文件中提供您的组件 fx:id-s,然后是:
public class ChangeProfilesMenuControllerTest extends ApplicationTest {
Pane mainroot;
Stage mainstage;
@Override
public void start(Stage stage) throws IOException {
mainroot = (Pane) FXMLLoader.load(Main.class.getResource("ChangeProfilesMenU.fxml"));
mainstage = stage;
stage.setScene(new Scene(mainroot));
stage.show();
stage.toFront();
}
@Before
public void setUp() throws Exception{
}
@After
public void tearDown () throws Exception {
FxToolkit.hideStage();
release(new KeyCode[]{});
release(new MouseButton[]{});
}
@Test
public void addingAndDeletingProfiles() {
@SuppressWarnings("unchecked")
ListView<String> listview = (ListView<String>) mainroot.lookup("#listview");
clickOn("#textfield");
write("This is a test");
clickOn("#createnewprofile");
...
}
如果你想访问你的控制器class实例:
@Override
public void start(Stage stage) throws IOException {
this.mainstage = stage;
FXMLLoader loader = new FXMLLoader(getClass().getResource("GameOn2.fxml"));
this.mainroot = loader.load();
this.controller = loader.getController();
stage.setScene(new Scene(mainroot));
stage.show();
stage.toFront();
}
我想知道在使用 TestFX 时我应该如何测试 JavaFXML 中某些场景的内容。 示例包括这些 link: https://github.com/TestFX/TestFX/blob/master/subprojects/testfx-junit5/src/test/java/org/testfx/framework/junit5/ApplicationRuleTest.java
https://medium.com/@mglover/java-fx-testing-with-testfx-c3858b571320
第一个link在测试class中构建场景,后者使用存储在其自身class中的预定义场景。 当使用 JavaFXML 而不是 JavaFX 时,我应该如何做类似的事情,其中场景的结构是在 fxml 文件而不是 java 代码中定义的?
第一步是在您的 fxml 文件中提供您的组件 fx:id-s,然后是:
public class ChangeProfilesMenuControllerTest extends ApplicationTest {
Pane mainroot;
Stage mainstage;
@Override
public void start(Stage stage) throws IOException {
mainroot = (Pane) FXMLLoader.load(Main.class.getResource("ChangeProfilesMenU.fxml"));
mainstage = stage;
stage.setScene(new Scene(mainroot));
stage.show();
stage.toFront();
}
@Before
public void setUp() throws Exception{
}
@After
public void tearDown () throws Exception {
FxToolkit.hideStage();
release(new KeyCode[]{});
release(new MouseButton[]{});
}
@Test
public void addingAndDeletingProfiles() {
@SuppressWarnings("unchecked")
ListView<String> listview = (ListView<String>) mainroot.lookup("#listview");
clickOn("#textfield");
write("This is a test");
clickOn("#createnewprofile");
...
}
如果你想访问你的控制器class实例:
@Override
public void start(Stage stage) throws IOException {
this.mainstage = stage;
FXMLLoader loader = new FXMLLoader(getClass().getResource("GameOn2.fxml"));
this.mainroot = loader.load();
this.controller = loader.getController();
stage.setScene(new Scene(mainroot));
stage.show();
stage.toFront();
}