Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DB Unit should ignore order of rows

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?

like image 837
EhmKah a.k.a. Michael Krauße Avatar asked Oct 30 '12 15:10

EhmKah a.k.a. Michael Krauße


1 Answers

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);
like image 168
EhmKah a.k.a. Michael Krauße Avatar answered Oct 19 '22 21:10

EhmKah a.k.a. Michael Krauße