本例源码下载:https://files.cnblogs.com/files/xiandedanteng/dbUnitTest20200211.zip
在做IDataSet比较时,特殊情况下会有期盼的IDataset和预想的IDataSet因顺序不一样而导致assert失败的情况发生。
一般的处理是用双重循环进行比较,也可以采用下面的方式:
准备的XLS:
期待的XLS:
可以看到3和8,10和12的位置是不匹配的,但数据是一致的。
排序具体的方法如下:
IDataSet dstExpected = new XlsDataSet(new FileInputStream(TEST_PATH +"expected01.xls")); FlatXmlDataSet.write(dstExpected,new FileOutputStream("D:\logs\dstExpected20200211.xml")); IDataSet dstActual = new XlsDataSet(new FileInputStream(TEST_PATH +"prepare01.xls")); FlatXmlDataSet.write(dstActual,new FileOutputStream("D:\logs\dstActual20200211.xml")); SortedTable actualTable=new SortedTable(dstActual.getTable("REDELIVERY_REQUEST"),new String[]{"col1","col2"}); actualTable.setUseComparable(true); SortedTable expectedTable=new SortedTable(dstExpected.getTable("REDELIVERY_REQUEST"),new String[]{"col1","col2"}); expectedTable.setUseComparable(true); Assertion.assertEquals(expectedTable, expectedTable);
参考资料的提示是按一列排序,我在本地试了不成功,按两列排序后才得以通过,这是本例和资料有差异的关键所在。
如果XLS文件中存在多于两列的情况,按以上方法排序也能成功。
参考资料:
https://blog.csdn.net/zhangyz_6719369/article/details/38053141
--2020-02-11--