我一直在尝试使用DbUnit来比较两个Excel文件。我发现了一个有趣的"问题。我使用类似于以下的代码:
XlsDataSet expectedDataSet = new XlsDataSet(firstFile);
XlsDataSet actualDataSet = new XlsDataSet(secondFile);
Assertion.assertEquals(expectedDataSet, actualDataSet);
但我得到了NPE。在遍历代码时,我最终得到了getValue(int row,String column)方法中的以下代码(dbunit-2.5.3中的类142行):
Cell cell = _sheet.getRow(row + 1).getCell(columnIndex);
电子表格中的一行是空的,当我检查上面的表格时,我看到行的地图中缺少行。而且由于DbUnitAssert中的compareData方法中的for循环假定行映射中存在所有行,因此上面的代码片段当然会失败并且#34;命中"丢失的行。
我一直在寻找是否有其他人遇到过这个问题,并找到了一种解决方法或某种方法来解决这个问题并不代表重写代码。但到目前为止,我一直没有运气。所以我想在这里尝试看看这里是否有人知道任何解决方案。或者,如果这应该作为DbUnit团队的错误解决?
使用:POI版本3.14,DbUnit v 2.5.3。
提前致谢!