Überprüfen Sie, ob zwei Listen in Java gleich sind
1. Einführung
In diesem kurzen Artikel konzentrieren wir uns auf das häufig auftretende Problem des Testens, ob zweiList-Instanzen dieselben Elemente in genau derselben Reihenfolge enthalten.
List ist eineordered-Datenstruktur, daher ist die Reihenfolge der Elemente vom Design her von Bedeutung.
Schauen Sie sich einen Auszug aus der Java-Dokumentation vonList#equalsan:
… Zwei Listen als gleich definiert sind, wenn sie dieselben Elemente in derselben Reihenfolge enthalten.
Diese Definition stellt sicher, dass die Methode equals in verschiedenen Implementierungen der List-Schnittstelle ordnungsgemäß funktioniert.
Dieses Wissen können wir beim Verfassen von Behauptungen nutzen.
In den folgenden Codefragmenten werden die folgenden Listen als Beispieleingaben verwendet:
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
In einem reinen JUnit-Test sind die folgenden Aussagen wahr:
@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
Assert.assertEquals(list1, list2);
Assert.assertNotSame(list1, list2);
Assert.assertNotEquals(list1, list3);
}
3. TestNG
Wenn Sie die Assertions von TestNG verwenden, sehen sie den Assertions von JUnit sehr ähnlich. Es ist jedoch wichtig zu beachten, dass die KlasseAssertaus einem anderen Paket stammt:
@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
Assert.assertEquals(list1, list2);
Assert.assertNotSame(list1, list2);
Assert.assertNotEquals(list1, list3);
}
4. AssertJ
Wenn SieAssertJ verwenden möchten, sehen die Aussagen wie folgt aus:
@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
assertThat(list1)
.isEqualTo(list2)
.isNotEqualTo(list3);
assertThat(list1.equals(list2)).isTrue();
assertThat(list1.equals(list3)).isFalse();
}
5. Fazit
In diesem Artikel haben wir untersucht, wie Sie testen können, ob zweiList-Instanzen dieselben Elemente in derselben Reihenfolge enthalten. Der wichtigste Teil dieses Problems war das richtige Verständnis der Funktionsweise derList-Datenstruktur.
Alle Codebeispiele finden Sie aufGitHub.