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.