1. введение
В этой короткой статье мы сосредоточимся на общей проблеме тестирования, если два экземпляра List содержат одни и те же элементы в одном и том же порядке.
Список является упорядоченной структурой данных, поэтому порядок элементов имеет значение по дизайну.
взгляните на отрывок из документации List#equals Java:
… два списка определяются как равные, если они содержат одни и те же элементы в одном и том же порядке.
Это определение гарантирует, что метод equals правильно работает в различных реализациях интерфейса списка.
Мы можем использовать эти знания при написании утверждений.
В следующих фрагментах кода мы будем использовать следующие списки в качестве примеров входных данных:
Listlist1 = Arrays.asList("1", "2", "3", "4"); List list2 = Arrays.asList("1", "2", "3", "4"); List 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. 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 .