Javafx 2 TableView内容的文本表示形式

Javafx 2 TableView内容的文本表示形式,javafx-2,tableview,jemmy,jemmyfx,Javafx 2,Tableview,Jemmy,Jemmyfx,出于测试目的(使用JemmyFX),我想检查TableView的内容是否正确格式化。例如:一列的类型为Double,已应用单元格工厂以百分比形式显示数字:20% 如何验证当值为0.2d时,单元格是否显示为20% 理想情况下,我会沿着这些思路寻找一些东西: TableColumn<VatInvoice, Double> percentVat = ... assertEquals(percentVat.getTextualRepresentation(), "20%"); 您可以尝试编

出于测试目的(使用JemmyFX),我想检查TableView的内容是否正确格式化。例如:一列的类型为
Double
,已应用单元格工厂以百分比形式显示数字:
20%

如何验证当值为
0.2d
时,单元格是否显示为
20%

理想情况下,我会沿着这些思路寻找一些东西:

TableColumn<VatInvoice, Double> percentVat = ...
assertEquals(percentVat.getTextualRepresentation(), "20%");

您可以尝试编辑单元格工厂

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%");
             }
         };
    }
});
tc.setCellFactory(新回调(){
@凌驾
公共TableCell调用(TableColumn参数){
返回新的TableCell(){
@凌驾
public void updateItem(对象项,布尔值为空){
//…格式化文本的逻辑
assertEquals(getText(),“20%”;
}
};
}
});

到目前为止,我使用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();
        }
    });
}
公共字符串getCellDataAsText(TableViewDock表,int行,int列){
final TableCellItemDock dock=新的TableCellItemDock(table.asTable(),行,列);
返回dock.wrap().waitState(新状态(){
@覆盖已到达的公共字符串(){
返回dock.wrap().cellWrap().getControl().getText();
}
});
}

在tc.itemProperty()set(0.2)之前添加tc.updateIndex(0)如何;根据需要,您也可以在updateIndex之前调用tc.updateTableColumn(column)和updateTableView(table)。无论如何,看起来你已经回答了这个问题。我最近为jemmyfx开发了treeTableViewWrap,并为jemmy做了一些修复。我是jfx的sqe工程师。我能说的是:杰米不应该做一切可以想象的事情。它应该做一些基本的事情。所以你的方法是合适的。如果您有关于测试功能的想法,可以添加这些功能(如格式检查器或smth),您可以在jemmy项目下向jira提交问题(RFE),并与舒拉Iline讨论,例如,@AlexanderKirov很好知道-我最近开始广泛使用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();
        }
    });
}