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.