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

问题描述 投票:0回答:1

早上好,我正在为一个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");

    }
java testing javafx junit hamcrest
1个回答
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");
© www.soinside.com 2019 - 2024. All rights reserved.