1

出于测试目的(使用 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
4

2 回答 2

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();
        }
    });
}
于 2013-09-03T23:00:26.437 回答
-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%");
             }
         };
    }
});
于 2013-09-02T23:49:02.293 回答