t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f9b02643b20> #<Tag:0x00007f9b026439e0> #<Tag:0x00007f9b026438a0>

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

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

1 Симпатия

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

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

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

int i = 0;
for (String expectedValue : expectedList) {
            assertThat(expectedValue).isEqualTo(actualList.get(i));
            i++;
        }
1 Симпатия

Не нашел я в 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);