Skontrolujte, či sú dva zoznamy v Jave rovnaké

1. Úvod

V tomto krátkom článku sa zameriame na spoločný problém testovania, ak sú dva Zoznam inštancie obsahujú rovnaké prvky v úplne rovnakom poradí.

Zoznam je nariadil dátová štruktúra, takže na poradí prvkov záleží od návrhu.

pozrite sa na výňatok z Zoznam # sa rovná Dokumentácia Java:

… Dva zoznamy sú definované ako rovnocenné, ak obsahujú rovnaké prvky v rovnakom poradí.

Táto definícia zaručuje, že metóda equals funguje správne v rôznych implementáciách rozhrania Zoznam.

Tieto vedomosti môžeme využiť pri písaní tvrdení.

V nasledujúcich úryvkoch kódu budeme ako príklad vstupov používať nasledujúce zoznamy:

Zoznam list1 = Arrays.asList ("1", "2", "3", "4"); Zoznam list2 = Arrays.asList ("1", "2", "3", "4"); Zoznam list3 = Arrays.asList ("1", "2", "4", "3");

2. JUnit

V čistom teste JUnit budú platiť nasledujúce tvrdenia:

@ Test public void whenTestingForEquality_ShouldBeEqual () vyvolá výnimku {Assert.assertEquals (list1, list2); Assert.assertNotSame (zoznam1, zoznam2); Assert.assertNotEquals (zoznam1, zoznam3); }

3. TestNG

Keď použijete tvrdenia TestNG, budú vyzerať veľmi podobne ako tvrdenia JUnit, ale je potrebné si uvedomiť, že Tvrdiť trieda pochádza z iného balíka:

@ Test public void whenTestingForEquality_ShouldBeEqual () vyvolá výnimku {Assert.assertEquals (list1, list2); Assert.assertNotSame (zoznam1, zoznam2); Assert.assertNotEquals (zoznam1, zoznam3); }

4. TvrdiťJ

Ak chcete používať AssertJ, budú jeho tvrdenia vyzerať nasledovne:

@Test public void whenTestingForEquality_ShouldBeEqual () vyvolá výnimku {assertThat (list1) .isEqualTo (list2) .isNotEqualTo (list3); assertThat (list1.equals (list2)). isTrue (); assertThat (list1.equals (list3)). isFalse (); }

5. Záver

V tomto článku sme skúmali, ako otestovať, či sú dve Zoznam inštancie obsahujú rovnaké prvky v rovnakom poradí. Najdôležitejšou súčasťou tohto problému bolo správne pochopenie toho, ako Zoznam dátová štruktúra je navrhnutá tak, aby fungovala.

Všetky príklady kódov nájdete na GitHub.


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