Kontroller, om to lister er ens i Java

1. Introduktion

I denne korte artikel vil vi fokusere på det almindelige problem med test, hvis to Liste forekomster indeholder de samme elementer i nøjagtig samme rækkefølge.

Liste er en beordrede datastruktur, så rækkefølgen af ​​elementer betyder noget efter design.

se et uddrag fra Liste # er lig Java-dokumentation:

... to lister er defineret til at være ens, hvis de indeholder de samme elementer i samme rækkefølge.

Denne definition sikrer, at ligemetoden fungerer korrekt på tværs af forskellige implementeringer af List-grænsefladen.

Vi kan bruge denne viden, når vi skriver påstande.

I de følgende kodestykker bruger vi følgende lister som eksempelindgange:

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åstande være sandt:

@Test offentlig ugyldig nårTestForEquality_ShouldBeEqual () kaster undtagelse {Assert.assertEquals (liste1, liste2); Assert.assertNotSame (liste1, liste2); Assert.assertNotEquals (liste1, liste3); }

3. TestNG

Når du bruger TestNG's påstande, ser de meget ud som JUnits påstande, men det er vigtigt at bemærke, at Hævde klasse kommer fra en anden pakke:

@Test offentlig ugyldig nårTestForEquality_ShouldBeEqual () kaster undtagelse {Assert.assertEquals (liste1, liste2); Assert.assertNotSame (liste1, liste2); Assert.assertNotEquals (liste1, liste3); }

4. AssertJ

Hvis du kan lide at bruge AssertJ, vil dets påstande se således ud:

@Test offentlig ugyldig nårTestingForEquality_ShouldBeEqual () kaster undtagelse {assertThat (list1) .isEqualTo (list2) .isNotEqualTo (list3); assertThat (list1.equals (list2)). isTrue (); assertThat (list1.equals (list3)). isFalse (); }

5. Konklusion

I denne artikel har vi undersøgt, hvordan man tester, om to Liste forekomster indeholder de samme elementer i samme rækkefølge. Den vigtigste del af dette problem var den rette forståelse af, hvordan Liste datastruktur er designet til at fungere.

Alle kodeeksempler kan findes på GitHub.


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