Is there a way telling DB-Unit to ignore the order in which rows should be compared? My problem is, that I do not know in which order the rows will be written to the database, but DB-Unit forces me to give an ordered list.
What I want dbunit to do is:
- check that number of rows in database and expected dataset match (Solved: Works out of the box
- check whether each rows will be found only once in the result-set. (NOT SOLVED)
Any ideas?
EhmKah
Solved this issue for me. I'm sorting the rows of the actual and expected tables. Therefore I use all columns which can be found in expected table. This approach might result in problems if the table you are checking is large but in my case it is not. :-)
Column[] expectedColumns = expectedTable.getTableMetaData().getColumns();
ITable sortedExpected = new SortedTable(expectedTable, expectedColumns);
ITable sortedActual = new SortedTable(actualTable, expectedColumns);
Assertion.assertEquals(sortedExpected, sortedActual);
来源:https://stackoverflow.com/questions/13142365/db-unit-should-ignore-order-of-rows