Обычно я сравниваю два одинаковых списка следующим образом:
assertThat(actual)
.usingRecursiveComparison
.ignoringExpectedNullFields
.isEqualTo(expected)
Теперь я хочу сравнить списки, в которых есть одинаковые элементы, расположенные в разных позициях. Я обнаружил, что могу сделать это следующим образом:
assertThat(actual)
.containsExactlyInAnyOrderElementsOf(expected)
Но в этом случае он не игнорирует пустые поля, как в первом способе. Как я могу этого добиться?
Я пробовал использовать те же методы цепочки, но, похоже, это не влияет на результаты.
Не знаю, каков ваш вариант игнорирования 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
, тест завершится неудачей.
Можете ли вы привести полный пример, должен ли {"one"} добиться успеха против {"one", null}? Я не вижу в документации «ignoringExpectedNullFields». Возможно, это старый API Есть методы filteredOn.