Hamcrest Object Matchers

1. Áttekintés

A Hamcrest egyeztetőket biztosít az egység teszt állításainak egyszerűbbé és olvashatóbbá tételéhez. Itt kezdheti meg a rendelkezésre álló mérkőzések felfedezését.

Ebben a gyors bemutatóban mélyebben belemerülünk az objektumillesztőkbe.

2. Beállítás

Ahhoz, hogy megszerezzük Hamcrest, csak nekünk kell adjuk hozzá a következő Maven-függőséget pom.xml:

 org.hamcrest java-hamcrest 2.0.0.0 teszt 

A legújabb Hamcrest verzió megtalálható a Maven Central oldalon.

3. Tárgyillesztők

Az objektumillesztők célja az objektum tulajdonságainak ellenőrzése.

Mielőtt megvizsgálnánk a párosokat, létrehozunk egy pár babot, hogy a példák egyszerűen érthetők legyenek.

Az első objektumunk neve Elhelyezkedés és nincsenek tulajdonságai:

nyilvános osztály helye {}

Megnevezzük a második babunkat Város és adja hozzá a következő megvalósítást:

nyilvános osztály A város kiterjeszti a Helyet {String name; Vonós állapot; // standard konstruktor, getterek és beállítók @Orride public String toString () {if (this.name == null && this.state == null) {return null; } StringBuilder sb = új StringBuilder (); sb.append ("["); sb.append ("Név:"); sb.append (ez.név); sb.append (","); sb.append ("Állam:"); sb.append (ez az állam); sb.append ("]"); return sb.toString (); }}

Vegye figyelembe, hogy Város kiterjed Elhelyezkedés. Ezt később felhasználjuk. Kezdjük az objektumillesztőkkel!

3.1. hasToString

Ahogy a neve is mondja, a hasToString metódus ellenőrzi, hogy egy bizonyos objektumnak van-e egy Sztring metódus, amely egy adott ad vissza Húr:

@Test public void givenACity_whenHasToString_thenCorrect () {City city = new City ("San Francisco", "CA"); assertThat (város, hasToString ("[Név: San Francisco, Állam: CA]")); }

Tehát létrehozunk egy Város és annak ellenőrzése Sztring metódus a Húr hogy szeretnénk. Tehetjük ezt egy lépéssel tovább, és az egyenlőség ellenőrzése helyett ellenőrizzünk valamilyen más feltételt:

@Test public void givenACity_whenHasToStringEqualToIgnoringCase_thenCorrect () {City city = new City ("San Francisco", "CA"); assertThat (város, hasToString (equalToIgnoringCase ("[Név: SAN FRANCISCO, ÁLLAM: CA]"))); }

Ahogy látjuk, hasToString túlterhelt és fogadhatja mind a Húr vagy szöveges egyező paraméterként. Tehát olyan dolgokat is megtehetünk, mint:

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

A szövegillesztőkről itt talál további információt. Most lépjünk a következő objektumillesztésre.

3.2. typeCompatibleWith

Ez a páros jelentése egy egy kapcsolat. Itt jön a mi Elhelyezkedés szuperosztály:

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

Ez azt mondja Város egy Elhelyezkedés, ami igaz és ennek a tesztnek meg kell felelnie. Továbbá, ha a negatív esetet tesztelni akartuk:

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

Természetesen a mi Város osztály nem a Húr.

Végül vegye figyelembe, hogy az összes Java-objektumnak meg kell felelnie a következő tesztnek:

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

Kérjük, ne feledje a páros van egy másik páros felett álló burkolatból áll, azzal a céllal, hogy az egész állítást olvashatóbbá tegye.

4. Következtetés

A Hamcrest egyszerű és tiszta módszert kínál az állítások létrehozására. Sokféle olyan páros van, amely minden fejlesztő életét egyszerűbbé teszi, valamint minden projektet olvashatóbbá tesz.

Az objektumillesztők pedig egyértelműen egyszerűek az osztály tulajdonságainak ellenőrzésére.

Mint mindig, a GitHub projekt teljes megvalósítását át fogja találni.


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