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.