我无法从测试类的对话框警报中获取文本

时间:2019-11-14 09:56:14

标签: java testing javafx junit hamcrest

早上好, 我正在为一个javafx类做一个测试类,我正在尝试立即控制错误。当发生错误时,会向我显示一个对话框警报,并带有一条消息,解释该错误。我想将此消息与我的测试课中的其他消息进行比较。
那是我尝试的最后一件事。

登录类

catch (ServerConnectionErrorException ex) {
            LOGGER.warning("LoginWindowController: Server connection error");
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Server Error");
            alert.setContentText("Unable to connect with server");
            Label serverErrorContext = new Label();
            serverErrorContext.setText(alert.getContentText());
            serverErrorContext.setId("serverErrorContext");
            alert.showAndWait();
        }

测试等级

@Test
    public void test4_ConnectionError(){
        clickOn("#txtLogin");
        write("user");
        clickOn("#txtPass");
        write("BBccd1234");
        clickOn("#btLogin");
        FxAssert.verifyThat("#serverErrorContext",LabeledMatchers.hasText("Unable to connect with server"));
        clickOn(".button");

    }

1 个答案:

答案 0 :(得分:0)

最后检查一下contentText是否与应该显示的消息相同,我决定为每个警报声明一个按钮并为其分配一个ID。每个ID都是唯一的,因此机器人无法单击其他按钮,并且如果提示未正确显示,则测试错误。
主要班级

Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Server Error");
            alert.setContentText("Unable to connect with server");
            Button errorButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK);
            errorButton.setId("serverConnectionError");
            alert.showAndWait();

测试等级

clickOn("#txtLogin");
        write("user");
        clickOn("#txtPass");
        write("BBccd1234");
        clickOn("#btLogin");
        FxAssert.verifyThat("#serverConnectionError",isEnabled());
        clickOn("#serverConnectionError");