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.


$config[zx-auto] not found$config[zx-overlay] not found