在用TestFx测试JavaFX应用程序时遇到问题。 我放了一个示例,仅使用VBox而不是我在实际应用程序中使用的BorderPane。我只是在画布上填充了一个画布,以免它没有空,而是有或没有任何变化。
public class MainPanelTest extends ApplicationTest {
Pane toTest;
boolean pressed = false;
@Override
public void start(Stage stage) {
toTest= new VBox(new Canvas(800,800));
toTest.setOnKeyPressed(e -> {
System.out.println("Pressed");
pressed = true;
});
stage.setScene(new Scene(toTest));
stage.show();
stage.toFront();
}
@Test
public void test_keyPressed_D() {
clickOn(toTest);
press(KeyCode.D);
WaitForAsyncUtils.waitForFxEvents();
assertTrue(pressed);
}
}
如果我不是使用窗格,而是使用TextField例如,则一切正常:
public class MainPanelTest extends ApplicationTest {
TextField toTest;
boolean pressed = false;
@Override
public void start(Stage stage) {
toTest= new TextField();
toTest.setOnKeyPressed(e -> {
System.out.println("Pressed");
pressed = true;
});
stage.setScene(new Scene(toTest));
stage.show();
stage.toFront();
}
@Test
public void test_keyPressed_D() {
clickOn(toTest);
press(KeyCode.D);
WaitForAsyncUtils.waitForFxEvents();
assertTrue(pressed);
}
}
这里缺少什么吗?在实际应用中,当我按下一个键时,事件被正确捕获。
答案 0 :(得分:2)
我想出了如何测试它,需要明确要求窗格的请求焦点。
只需添加此行const proxy = require("http-proxy-middleware");
module.exports = app => {
app.use(proxy.createProxyMiddleware("/api", { target: "http://localhost:3001/" }));
};
。
此测试通过:
toTest.requestFocus();