Podudaranje predmeta Hamcrest

1. Pregled

Hamcrest nudi podudarnosti za pojednostavljivanje i čitljivost tvrdnji o jedinstvenom testu. Ovdje možete započeti s istraživanjem nekih dostupnih podudaranja.

U ovom brzom vodiču zaronit ćemo dublje u podudaranje predmeta.

2. Postavljanje

Da bismo dobili Hamcrest, samo trebamo dodajte sljedeću Mavenovu ovisnost u našu pom.xml:

 org.hamcrest java-hamcrest 2.0.0.0 test 

Najnoviju verziju Hamcrest možete pronaći na Maven Central.

3. Podudaranje predmeta

Podudaranje objekata namijenjeno je obavljanju provjera svojstava objekta.

Prije nego što pogledamo podudarnosti, stvorit ćemo nekoliko zrna kako bismo primjere učinili jednostavnima za razumijevanje.

Naš prvi objekt se zove Mjesto i nema svojstva:

javna klasa Lokacija {}

Nazvat ćemo naš drugi grah Grad i dodajte mu sljedeću implementaciju:

javni razred City proširuje lokaciju {Naziv niza; Država niza; // standardni konstruktor, getteri i postavljači @Override public String toString () {if (this.name == null && this.state == null) {return null; } StringBuilder sb = novi StringBuilder (); sb.append ("["); sb.append ("Ime:"); sb.append (this.name); sb.append (","); sb.append ("Država:"); sb.append (this.state); sb.append ("]"); vratiti sb.toString (); }}

Imajte na umu da Grad proteže se Mjesto. To ćemo iskoristiti kasnije. Počnimo sada s podudaranjem predmeta!

3.1. hasToString

Kao što i samo ime kaže, hasToString metoda potvrđuje da određeni objekt ima toString metoda koja vraća određenu Niz:

@Test public void givenACity_whenHasToString_thenCorrect () {City city = novi grad ("San Francisco", "CA"); assertThat (grad, hasToString ("[Ime: San Francisco, država: CA]")); }

Dakle, mi stvaramo Grad i provjeru da je to toString metoda vraća Niz da želimo. Možemo napraviti ovaj korak dalje i umjesto provjere jednakosti, provjeriti neki drugi uvjet:

@Test javna praznina givenACity_whenHasToStringEqualToIgnoringCase_thenCorrect () {City city = novi grad ("San Francisco", "CA"); assertThat (grad, hasToString (jednakToIgnoringCase ("[IME: SAN FRANCISCO, DRŽAVA: CA]"))); }

Kao što vidimo, hasToString je preopterećen i može primiti oba a Niz ili podudaranje teksta kao parametar. Dakle, možemo raditi i stvari poput:

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

Više informacija o podudaranju teksta možete pronaći ovdje. Sada prijeđimo na sljedeće podudaranje predmeta.

3.2. typeCompatibleWith

Ovaj meč predstavlja an je odnos. Evo našeg Mjesto superklasa u igri:

@Test javna praznina danaACity_whenTypeCompatibleWithLocation_thenCorrect () {City city = novi grad ("San Francisco", "CA"); assertThat (city.getClass (), je (typeCompatibleWith (Location.class))); }

Ovo govori ono Grad je Mjesto, što je istina i ovaj test bi trebao proći. Također, ako smo htjeli testirati negativni slučaj:

@Test javna praznina danaACity_whenTypeNotCompatibleWithString_thenCorrect () {City city = novi grad ("San Francisco", "CA"); assertThat (city.getClass (), je (nije (typeCompatibleWith (String.class)))); }

Naravno, naša Grad razred nije a Niz.

Na kraju, imajte na umu da bi svi Java objekti trebali proći sljedeći test:

@Test javna praznina danaACity_whenTypeCompatibleWithObject_thenCorrect () {City city = novi grad ("San Francisco", "CA"); assertThat (city.getClass (), je (typeCompatibleWith (Object.class))); }

Molim te, upamti to podudarnik je sastoji se od omota nad drugim podudarnikom koji ima za cilj učiniti čitavu tvrdnju čitljivijom.

4. Zaključak

Hamcrest pruža jednostavan i čist način stvaranja tvrdnji. Postoji širok spektar podudaranja koje život svakog programera čine jednostavnijim, kao i svaki projekt čitljivijim.

A podudaranje objekata definitivno je jednostavan način provjere svojstava klase.

Kao i uvijek, u potpunosti ćete primijeniti projekt GitHub.


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