Zhodovače objektov Hamcrest

1. Prehľad

Hamcrest poskytuje porovnávače, vďaka ktorým sú tvrdenia o jednotkových testoch jednoduchšie a čitateľnejšie. Tu môžete začať skúmať niektoré z dostupných porovnávačov.

V tomto rýchlom výučbe sa ponoríme hlbšie do porovnávačov objektov.

2. Inštalácia

Aby sme dostali Hamcrest, musíme pridajte nasledujúcu závislosť Maven do našej pom.xml:

 org.hamcrest test Java-hamcrest 2.0.0.0 

Najnovšiu verziu Hamcrest nájdete na serveri Maven Central.

3. Zhody objektov

Zlaďovače objektov sú určené na vykonávanie kontrol vlastností objektu.

Predtým, ako sa pozrieme na porovnávače, vytvoríme niekoľko fazulí, aby boli príklady jednoduché na pochopenie.

Náš prvý objekt sa volá Poloha a nemá žiadne vlastnosti:

verejná trieda Umiestnenie {}

Pomenujeme si našu druhú fazuľu Mesto a pridajte doň nasledujúcu implementáciu:

public class Mesto rozširuje Location {Názov reťazca; Stav reťazca; // štandardný konštruktor, getri a nastavovatelia @Override public String toString () {if (this.name == null && this.state == null) {return null; } StringBuilder sb = nový StringBuilder (); sb.append ("["); sb.append ("Meno:"); sb.append (this.name); sb.append (","); sb.append ("Štát:"); sb.append (this.state); sb.append ("]"); vrátiť sb.toString (); }}

Poznač si to Mesto predlžuje Poloha. Neskôr to využijeme. Teraz začnime s nástrojmi na porovnávanie objektov!

3.1. hasToString

Ako hovorí názov, hasToString metóda overuje, či určitý objekt má a natiahnuť metóda, ktorá vráti konkrétny String:

@Test public void givenACity_whenHasToString_thenCorrect () {City city = new City ("San Francisco", "CA"); assertThat (mesto, hasToString ("[Názov: San Francisco, Štát: CA]")); }

Takže vytvárame Mesto a overenie, či je natiahnuť metóda vracia String že chceme. Môžeme to posunúť o krok ďalej a namiesto kontroly rovnosti skontrolovať ešte nejaké ďalšie podmienky:

@Test public void givenACity_whenHasToStringEqualToIgnoringCase_thenCorrect () {City city = new City ("San Francisco", "CA"); assertThat (mesto, hasToString (equalToIgnoringCase ("[NÁZOV: SAN FRANCISCO, ŠTÁT: CA]")))); }

Ako vidíme, hasToString je preťažený a môže prijímať ako a String alebo textový porovnávač ako parameter. Môžeme teda robiť napríklad aj tieto veci:

@Test public void givenACity_whenHasToStringEmptyOrNullString_thenCorrect () {City city = new City (null, null); assertThat (mesto, hasToString (emptyOrNullString ())); }

Viac informácií o textových porovnávačoch nájdete tu. Teraz prejdime na nasledujúci porovnávač objektov.

3.2. typeCompatibleWith

Tento dohadzovač predstavuje je-a vzťah. Tu prichádza náš Poloha supertrieda do hry:

@Test public void givenACity_whenTypeCompatibleWithLocation_thenCorrect () {City city = new City ("San Francisco", "CA"); assertThat (city.getClass (), je (typeCompatibleWith (Location.class))); }

Toto hovorí Mesto je-a Miesto, čo je pravda a táto skúška by mala vyhovieť. Ak by sme chceli otestovať aj negatívny prípad:

@Test public void givenACity_whenTypeNotCompatibleWithString_thenCorrect () {City city = new City ("San Francisco", "CA"); assertThat (city.getClass (), is (not (typeCompatibleWith (String.class))))); }

Samozrejme náš Mesto trieda nie je a String.

Na záver nezabudnite, že všetky objekty Java by mali absolvovať nasledujúci test:

@Test public void givenACity_whenTypeCompatibleWithObject_thenCorrect () {City city = new City ("San Francisco", "CA"); assertThat (city.getClass (), je (typeCompatibleWith (Object.class)))); }

Pamätajte, prosím, na to dohadzovač je pozostáva z obálky nad iným porovnávačom s cieľom urobiť celé tvrdenie čitateľnejším.

4. Záver

Hamcrest poskytuje jednoduchý a čistý spôsob vytvárania tvrdení. Existuje široká škála porovnávačov, vďaka ktorým je život každého vývojára jednoduchší a každý projekt čitateľnejší.

A porovnávače objektov sú rozhodne priamym spôsobom kontroly vlastností triedy.

Ako vždy nájdete úplnú implementáciu v rámci projektu GitHub.


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