Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Как вывести разницу между сравниваемыми коллекциями?

assertj
harmcrest
java
Теги: #<Tag:0x00007fedbfe0a7e0> #<Tag:0x00007fedbfe0a6a0> #<Tag:0x00007fedbfe0a4c0>

(Pavel Volkov) #1

Здравствуйте.
Сравниваю две коллекции строк на равенство.
Например: assertThat(first, equalTo(second));
Если они не совпадают, то в исключении выводится все содержимое коллекций без возможности узнать разницу между ними.
Есть ли готовые решения в harmcrest или xunit.asserts чтобы показать именно разницу между списками?


(Vjacheslav Lukashevich) #2

AssertJ умеет такое. http://joel-costigliola.github.io/assertj/


(Maxim Andryushchenkov) #3

Мне кажется тут проще кастомный ассерт написать


(Vjacheslav Lukashevich) #4

можно просто перебрать список

assertThat(expectedList).hasSize(actualList.size());

int i = 0;
for (String expectedValue : expectedList) {
            assertThat(expectedValue).isEqualTo(actualList.get(i));
            i++;
        }

(Pavel Volkov) #5

Не нашел я в AssertJ вывода разницы между коллекциями.

Сделал так:

Sets.SetView<String> result; //Guava
if (descFromDB.size() > descFromUi.size()){ //Hashset<String>
    result = Sets.difference(descFromDB, descFromUi);
}else{
    result = Sets.difference(descFromUi, descFromDB);
}
assertThat(result.size()).withFailMessage("Разница элементов в списках:" + result.toString()).isEqualTo(0);