Vérifier si deux listes sont égales en Java

1. Introduction

Dans ce court article, nous nous concentrerons sur le problème courant du test si deux instances de List contiennent les mêmes éléments exactement dans le même ordre.

La liste est une structure de données ordonnée , donc l'ordre des éléments compte par conception.

jetez un œil à un extrait de la documentation de List # equals Java:

… Deux listes sont définies égales si elles contiennent les mêmes éléments dans le même ordre.

Cette définition garantit que la méthode equals fonctionne correctement dans différentes implémentations de l'interface List.

Nous pouvons utiliser ces connaissances lors de la rédaction d'assertions.

Dans les extraits de code suivants, nous utiliserons les listes suivantes comme exemples d'entrées:

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

Dans un test JUnit pur, les assertions suivantes seront vraies:

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

3. TestNG

Lorsque vous utilisez les assertions de TestNG, elles ressembleront beaucoup aux assertions de JUnit, mais il est important de noter que la classe Assert provient d'un package différent:

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

4. AssertJ

Si vous aimez utiliser AssertJ, ses assertions ressembleront à ceci:

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

5. Conclusion

Dans cet article, nous avons exploré comment tester si deux instances de List contiennent les mêmes éléments dans le même ordre. La partie la plus importante de ce problème était la bonne compréhension de la façon dont la structure de données List est conçue pour fonctionner.

Tous les exemples de code peuvent être trouvés sur GitHub.