Javafx 2 TableView内容的文本表示形式
出于测试目的(使用JemmyFX),我想检查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%"); 您可以尝试编
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();
}
});
}