Текстовое представление содержимого TableView
В целях тестирования (с использованием JemmyFX) я хочу проверить, правильно ли отформатирован контент TableView. Например: один столбец имеет тип Double
и фабрика ячеек была применена, чтобы показать число в процентах: 20%
,
Как я могу проверить это, когда значение 0.2d
клетка показывает как 20%
?
В идеале я ищу что-то вроде этого:
TableColumn<VatInvoice, Double> percentVat = ...
assertEquals(percentVat.getTextualRepresentation(), "20%");
Примечание: я пытался использовать TableCell напрямую, как показано ниже, но getText()
возвращает ноль:
TableCell<VatInvoice, Double> tc = percentVat.getCellFactory().call(percentVat);
tc.itemProperty().set(0.2);
assertEquals(tc.getText(), "20%"); //tc.getText() is null
2 ответа
Решение
Лучшее, что я нашел до сих пор, используя JemmyFX, это следующее:
public String getCellDataAsText(TableViewDock table, int row, int column) {
final TableCellItemDock dock = new TableCellItemDock(table.asTable(), row, column);
return dock.wrap().waitState(new State<String>() {
@Override public String reached() {
return dock.wrap().cellWrap().getControl().getText();
}
});
}
Вы можете попробовать отредактировать фабрику ячеек.
tc.setCellFactory(new Callback<TableColumn, TableCell>(){
@Override
public TableCell call(TableColumn param){
return new TableCell(){
@Override
public void updateItem(Object item, boolean isEmpty){
//...logic to format the text
assertEquals(getText(), "20%");
}
};
}
});