assertj / Java сравнивая объекты с полем списка, игнорируя порядок элементов в списке - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу сравнить 2 списка объектов (скажем, Foo) в тесте.

List<Foo> fooA;
List<Foo> fooB;

Каждая запись Foo имеет одно из полей типа List (скажем, Bar)

class Foo {
  private List<Bar> bars;
  ....
}

assertThat(fooA).isEqualTo(fooB);

Сравнение не удается, потому что элементы стержней одинаковы, но в другом порядке.

Есть ли способ сравнить их, игнорируя порядок?

Я не ищу вариант ниже.

assertThat(fooA).usingElementComparatorIgnoringFields("bars").isEqualTo(fooB);

В идеале я бы хотел сравнить все поля

1 Ответ

0 голосов
/ 10 декабря 2018

То, что вы ищете, это containsExactlyInAnyOrderElementsOf(Iterable), определенное в IterableAssert (выделение мое):

Проверяет, что фактическая группа содержит ровно заданнуюзначения и ничего больше, в любом порядке .

Вы можете написать так:

List<Foo> fooA;
List<Foo> fooB;
//...
assertThat(fooA).containsExactlyInAnyOrderElementsOf(fooB);
...