Модульный тест Javafx для таблиц - PullRequest
1 голос
/ 04 мая 2020

Я новичок в JavaFx, или, если быть более точным, я не знаю, как Google для того, что я хочу. В настоящее время я работаю в проекте Gradle, используя JavaFx в качестве GUI. Я определил таблицу и пару столбцов таблицы. В одном столбце таблицы я заполняю его флажками. Опять же, я не знаю термины, так как я просто скопировал их из inte rnet.

. Так я определяю столбец таблицы.

@FXML
private TableColumn<Section, Boolean> enrollStatus;

Существует observableList. Из того, что я знаю, он каким-то образом может магически связываться с tableView.

private ObservableList<Section> observableSections = FXCollections.observableArrayList();

Я инициализирую в своем классе контроллера так:

@FXML
    public void initialize() {
        courseCode.setCellValueFactory(new PropertyValueFactory<Section, String>("courseCode"));
        sectionCode.setCellValueFactory(new PropertyValueFactory<Section, String>("sectionCode"));
        courseName.setCellValueFactory(new PropertyValueFactory<Section, String>("courseName"));
        instructorName.setCellValueFactory(new PropertyValueFactory<Section, String>("instructorName"));
        enrollStatus.setCellValueFactory(new PropertyValueFactory<Section, Boolean>("enrollStatus"));
        enrollStatus.setCellFactory(CheckBoxTableCell.forTableColumn(enrollStatus));
        tableView.setEditable(true);
        enrollStatus.setEditable(true);
        tableView.setItems(observableSections);
    }

В контроллере также есть функция, которая после Я заполняю tableView с помощью Section, он будет добавлять прослушиватель к каждому флажку.

void populateSectionsList(boolean addListener, List<Course> courses) {
    observableSections.clear();
    for (Course course : courses) {
        List<Section> sections = course.getSections();
        if (addListener) {
            for (Section section : sections) {
                if (section.getEnrollStatus() == false) { //if true, listener added already
                    section.enrollStatusProperty().addListener(
                        (observable, oldvalue, newvalue) -> {
                            if (oldvalue == false && newvalue == true) {
                                enrolledSections.add(section);

                            if (oldvalue == true && newvalue == false)
                                for (int i = 0; i < enrolledSections.size(); ++i)
                                    if (enrolledSections.get(i).getEnrollStatus() == false) {
                                        enrolledSections.remove(i);
                                        updateTimeTable();
                                    }
                            }
                    );
                    }
            }
        }
        observableSections.addAll(sections);
    }
}

До этого момента все флажки в tableView динамически размещались при запуске, что означает, что они не находятся в xml файл. Поэтому я не могу выполнить следующую задачу в модульном тесте:

 @Test
     public void testbuttonSfqEnrollCourse() {
         clickOn("#tabMain");
         clickOn("#buttonSearch");
         clickOn("#tabSfq");
         clickOn("#buttonSfqEnrollCourse");
     }

, поэтому моя проблема заключается в том, как выполнить кодирование в тестовом файле таким образом, чтобы после нажатия «test» в Gradle Task он выскакивал окно и автоматически установить флажки в табличном представлении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...