Перейти к основному содержимому

Проверьте, равны ли два списка в Java

· 2 мин. чтения

1. Введение

В этой короткой статье мы сосредоточимся на распространенной проблеме тестирования, если два экземпляра List содержат одни и те же элементы в точно таком же порядке.

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

взгляните на отрывок из документации List#equals Java:

… два списка считаются равными, если они содержат одни и те же элементы в одном и том же порядке.

Это определение гарантирует правильную работу метода equals в различных реализациях интерфейса List.

Мы можем использовать эти знания при написании утверждений.

В следующих фрагментах кода мы будем использовать следующие списки в качестве примеров входных данных:

List<String> list1 = Arrays.asList("1", "2", "3", "4");
List<String> list2 = Arrays.asList("1", "2", "3", "4");
List<String> list3 = Arrays.asList("1", "2", "4", "3");

2. Юнит

В чистом тесте JUnit будут верны следующие утверждения:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
Assert.assertEquals(list1, list2);
Assert.assertNotSame(list1, list2);
Assert.assertNotEquals(list1, list3);
}

3. ТестНГ

При использовании утверждений TestNG они будут очень похожи на утверждения JUnit, но важно отметить, что класс Assert происходит из другого пакета:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
Assert.assertEquals(list1, list2);
Assert.assertNotSame(list1, list2);
Assert.assertNotEquals(list1, list3);
}

4. УтвердитьJ

Если вам нравится использовать AssertJ , его утверждения будут выглядеть следующим образом:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
assertThat(list1)
.isEqualTo(list2)
.isNotEqualTo(list3);

assertThat(list1.equals(list2)).isTrue();
assertThat(list1.equals(list3)).isFalse();
}

5. Вывод

В этой статье мы рассмотрели, как проверить, содержат ли два экземпляра List одни и те же элементы в одном и том же порядке. Наиболее важной частью этой проблемы было правильное понимание того, как работает структура данных List .

Все примеры кода можно найти на GitHub .