Проверьте, равны ли два списка в Java
1. Вступление
В этой короткой статье мы сосредоточимся на общей проблеме тестирования, если два экземпляраList содержат одинаковые элементы в одном и том же порядке.
List - это структура данныхordered, поэтому порядок элементов имеет значение по замыслу.
взгляните на отрывок из документации JavaList#equals:
… Два списка определены равными, если они содержат одинаковые элементы в одинаковом порядке.
Это определение гарантирует, что метод equals работает должным образом в разных реализациях интерфейса List.
Мы можем использовать эти знания при написании утверждений.
В следующих фрагментах кода мы будем использовать следующие списки в качестве входных данных:
List list1 = Arrays.asList("1", "2", "3", "4");
List list2 = Arrays.asList("1", "2", "3", "4");
List list3 = Arrays.asList("1", "2", "4", "3");
2. JUnit
В чистом тесте JUnit выполняются следующие утверждения с:
@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
Assert.assertEquals(list1, list2);
Assert.assertNotSame(list1, list2);
Assert.assertNotEquals(list1, list3);
}
3. TestNG
При использовании утверждений TestNG они будут очень похожи на утверждения JUnit, но важно отметить, что классAssert происходит из другого пакета:
@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
Assert.assertEquals(list1, list2);
Assert.assertNotSame(list1, list2);
Assert.assertNotEquals(list1, list3);
}
4. AssertJ
Если вы хотите использовать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.