Prüfen Sie, ob zwei Listen in Java gleich sind

Ü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.