Provjerite jesu li dva popisa jednaka na Javi
1. Uvod
U ovom ćemo se kratkom članku usredotočiti na uobičajeni problem testiranja ako su dva Popis instance sadrže iste elemente u potpuno istom redoslijedu.
Popis je naredio struktura podataka pa je redoslijed elemenata bitan prema dizajnu.
pogledajte odlomak iz Navedi # jednako Java dokumentacija:
... dva su popisa definirana kao jednaka ako sadrže iste elemente istim redoslijedom.
Ova definicija osigurava da metoda equals radi ispravno u različitim implementacijama sučelja List.
To znanje možemo koristiti prilikom pisanja tvrdnji.
U sljedećim isječcima koda koristit ćemo sljedeće popise kao primjere unosa:
Lista popisa1 = Arrays.asList ("1", "2", "3", "4"); Lista popisa2 = Arrays.asList ("1", "2", "3", "4"); Lista popisa3 = Arrays.asList ("1", "2", "4", "3");
2. JUNIT
U čistom JUnit testu sljedeće će tvrdnje biti istinite:
@Test public void whenTestingForEquality_ShouldBeEqual () baca iznimku {Assert.assertEquals (list1, list2); Assert.assertNotSame (list1, list2); Assert.assertNotEquals (popis1, popis3); }
3. TestNG
Kada se koriste tvrdnje TestNG-a, izgledat će vrlo slično tvrdnjama JUnit-a, ali važno je primijetiti da Tvrditi klasa dolazi iz drugog paketa:
@Test public void whenTestingForEquality_ShouldBeEqual () baca iznimku {Assert.assertEquals (list1, list2); Assert.assertNotSame (list1, list2); Assert.assertNotEquals (popis1, popis3); }
4. AssertJ
Ako želite koristiti AssertJ, tvrdnje će izgledati kako slijedi:
@Test public void whenTestingForEquality_ShouldBeEqual () baca iznimku {assertThat (list1) .isEqualTo (list2) .isNotEqualTo (list3); assertThat (list1.equals (list2)). isTee (); assertThat (list1.equals (list3)). isFalse (); }
5. Zaključak
U ovom smo članku istražili kako testirati jesu li dva Popis instance sadrže iste elemente u istom redoslijedu. Najvažniji dio ovog problema bilo je pravilno razumijevanje načina na koji Popis struktura podataka dizajnirana je za rad.
Svi primjeri koda mogu se naći na GitHubu.