Controleer of twee lijsten gelijk zijn in Java
1. Inleiding
In dit korte artikel zullen we ons concentreren op het veelvoorkomende probleem van het testen van twee Lijst instanties bevatten dezelfde elementen in exact dezelfde volgorde.
Lijst is een besteld datastructuur, zodat de volgorde van de elementen per definitie belangrijk is.
bekijk een fragment uit het Lijst # is gelijk aan Java-documentatie:
… Twee lijsten worden als gelijk gedefinieerd als ze dezelfde elementen in dezelfde volgorde bevatten.
Deze definitie zorgt ervoor dat de equals-methode correct werkt in verschillende implementaties van de List-interface.
Deze kennis kunnen we gebruiken bij het schrijven van beweringen.
In de volgende codefragmenten gebruiken we de volgende lijsten als voorbeeldinvoer:
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 een pure JUnit-test zullen de volgende beweringen waar zijn:
@Test openbare leegte whenTestingForEquality_ShouldBeEqual () gooit uitzondering {Assert.assertEquals (lijst1, lijst2); Assert.assertNotSame (lijst1, lijst2); Assert.assertNotEquals (lijst1, lijst3); }
3. TestNG
Wanneer u de beweringen van TestNG gebruikt, zullen ze er ongeveer hetzelfde uitzien als de beweringen van JUnit, maar het is belangrijk op te merken dat de Beweren les komt uit een ander pakket:
@Test openbare leegte whenTestingForEquality_ShouldBeEqual () gooit uitzondering {Assert.assertEquals (lijst1, lijst2); Assert.assertNotSame (lijst1, lijst2); Assert.assertNotEquals (lijst1, lijst3); }
4. BewerenJ
Als je AssertJ graag gebruikt, zien de beweringen er als volgt uit:
@Test openbare leegte whenTestingForEquality_ShouldBeEqual () gooit Uitzondering {assertThat (lijst1) .isEqualTo (lijst2) .isNotEqualTo (lijst3); assertThat (lijst1.equals (lijst2)). isTrue (); assertThat (lijst1.equals (lijst3)). isFalse (); }
5. Conclusie
In dit artikel hebben we onderzocht hoe we kunnen testen of twee Lijst instanties bevatten dezelfde elementen in dezelfde volgorde. Het belangrijkste onderdeel van dit probleem was het juiste begrip van hoe de Lijst datastructuur is ontworpen om te werken.
Alle codevoorbeelden zijn te vinden op GitHub.