出于测试目的(使用JemmyFX),我想检查TableView的内容是否格式正确。例如:一列的类型为Double
,并且已应用单元格工厂以将该数字显示为百分比:20%
。
如何验证值为0.2d
时,单元格显示为20%
?
理想情况下,我正在寻找这些方面的东西:
TableColumn<VatInvoice, Double> percentVat = ...
assertEquals(percentVat.getTextualRepresentation(), "20%");
注意:我尝试直接使用TableCell,但getText()
返回null:
TableCell<VatInvoice, Double> tc = percentVat.getCellFactory().call(percentVat);
tc.itemProperty().set(0.2);
assertEquals(tc.getText(), "20%"); //tc.getText() is null
答案 0 :(得分:1)
到目前为止,我使用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();
}
});
}
答案 1 :(得分:-1)
您可以尝试编辑单元格工厂。
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%");
}
};
}
});