I am looking to compare 2 list of objects (say Foo) in test.
List<Foo> fooA;
List<Foo> fooB;
Each Foo entry has one of the fields of type List (say Bar)
class Foo {
private List<Bar> bars;
....
}
assertThat(fooA).isEqualTo(fooB);
Comparison fails because elements of bars are same but in different order.
Is there a way to compare them ignoring order?
I am not looking for below option.
assertThat(fooA).usingElementComparatorIgnoringFields("bars").isEqualTo(fooB);
Ideally I would like to compare all the fields
What you are looking for is containsExactlyInAnyOrderElementsOf(Iterable)
defined in IterableAssert
(emphasis is mine) :
Verifies that the actual group contains exactly the given values and nothing else, in any order.
You could write so :
List<Foo> fooA;
List<Foo> fooB;
//...
assertThat(fooA).containsExactlyInAnyOrderElementsOf(fooB);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With