Как сравнивать списки в любом порядке без пустых полей в Assertj?

Обычно я сравниваю два одинаковых списка следующим образом:

assertThat(actual)
    .usingRecursiveComparison
    .ignoringExpectedNullFields
    .isEqualTo(expected)

Теперь я хочу сравнить списки, в которых есть одинаковые элементы, расположенные в разных позициях. Я обнаружил, что могу сделать это следующим образом:

assertThat(actual)
    .containsExactlyInAnyOrderElementsOf(expected)

Но в этом случае он не игнорирует пустые поля, как в первом способе. Как я могу этого добиться?

Я пробовал использовать те же методы цепочки, но, похоже, это не влияет на результаты.

Можете ли вы привести полный пример, должен ли {"one"} добиться успеха против {"one", null}? Я не вижу в документации «ignoringExpectedNullFields». Возможно, это старый API Есть методы filteredOn.

matt 17.06.2024 10:19
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не знаю, каков ваш вариант игнорирования null, но если вы действительно хотите пойти по этому пути, вы можете объединить .ignoringExpectedNullFields() и ..ignoringCollectionOrder(). Например, следующий тест является успешным:

val actual = listOf("one", "four", "three", "two")
val expected = listOf("one", "two", "three", null)

assertThat(actual)
    .usingRecursiveComparison()
    .ignoringExpectedNullFields()
    .ignoringCollectionOrder()
    .isEqualTo(expected)

Обратите внимание, что actual и expected должны иметь одинаковый размер — если вы удалите "four", например, из actual, тест завершится неудачей.

Другие вопросы по теме