Sjekk om to lister er like i Java
1. Introduksjon
I denne korte artikkelen vil vi fokusere på det vanlige problemet med testing av to Liste forekomster inneholder de samme elementene i nøyaktig samme rekkefølge.
Liste er en bestilt datastruktur slik at rekkefølgen på elementene har betydning for design.
ta en titt på et utdrag fra Liste # er lik Java-dokumentasjon:
... to lister er definert til å være like hvis de inneholder de samme elementene i samme rekkefølge.
Denne definisjonen sikrer at likemetoden fungerer som den skal på tvers av forskjellige implementeringer av grensesnittet List.
Vi kan bruke denne kunnskapen når vi skriver påstander.
I de følgende kodebitene bruker vi følgende lister som eksempelinnganger:
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
I en ren JUnit-test vil følgende påstander være sanne:
@Test offentlig ugyldig nårTestingForEquality_ShouldBeEqual () kaster unntak {Assert.assertEquals (liste1, liste2); Assert.assertNotSame (liste1, liste2); Assert.assertNotEquals (liste1, liste3); }
3. TestNG
Når du bruker TestNGs påstander, vil de se veldig ut som JUnits påstander, men det er viktig å legge merke til at Påstå klassen kommer fra en annen pakke:
@Test offentlig ugyldig nårTestingForEquality_ShouldBeEqual () kaster unntak {Assert.assertEquals (liste1, liste2); Assert.assertNotSame (liste1, liste2); Assert.assertNotEquals (liste1, liste3); }
4. AssertJ
Hvis du liker å bruke AssertJ, vil påstandene se slik ut:
@Test offentlig ugyldig når TestingForEquality_ShouldBeEqual () kaster Unntak {assertThat (liste1) .isEqualTo (liste2) .isNotEqualTo (liste3); assertThat (list1.equals (list2)). isTrue (); assertThat (list1.equals (list3)). isFalse (); }
5. Konklusjon
I denne artikkelen har vi undersøkt hvordan vi kan teste om to Liste forekomster inneholder de samme elementene i samme rekkefølge. Den viktigste delen av dette problemet var riktig forståelse av hvordan Liste datastrukturen er designet for å fungere.
Alle kodeeksempler finnes på GitHub.