Bevezetés az AssertJ-be

Ez a cikk egy sorozat része: • Bevezetés az AssertJ-be (aktuális cikk) • AssertJ a Guava számára

• AssertJ Java 8 funkciói

• Egyéni állítások az AssertJ-vel

1. Áttekintés

Ebben a cikkben az AssertJ - egy nyílt forráskódú, közösségvezérelt könyvtárat fogjuk felfedezni, amelyet folyékony és gazdag állítások írására használunk Java tesztekben.

Ez a cikk az AssertJ alapmodul nevű eszközeire összpontosít AssertJ-core.

2. Maven-függőségek

Az AssertJ használatához be kell illesztenie a következő szakaszt pom.xml fájl:

 org.assertj assertj-core 3.4.1 teszt 

Ez a függőség csak az alapvető Java állításokat fedi le. Ha speciális állításokat szeretne használni, akkor külön modulokat kell hozzáadnia.

Ne feledje, hogy a Java 7 és korábbi verziókhoz az AssertJ 2.x.x mag verzióját kell használni.

A legújabb verziók itt találhatók.

3. Bevezetés

Az AssertJ osztályok és segédprogramok sorát kínálja, amelyek lehetővé teszik számunkra, hogy könnyen és könnyen állítsunk állításokat a következőkhöz:

  • Normál Java
  • Java 8
  • Gujávafa
  • Joda idő
  • Neo4J és
  • Swing alkatrészek

Az összes modul részletes listája elérhető a projekt weboldalán.

Kezdjünk néhány példával, közvetlenül az AssertJ dokumentációjából:

assertThat (frodo) .isNotEqualTo (sauron) .isIn (fellowshipOfTheRing); assertThat (frodo.getName ()) .startsWith ("Fro") .endsWith ("do") .isEqualToIgnoringCase ("frodo"); assertThat (fellowshipOfTheRing) .hasSize (9). tartalmaz (frodo, sam) .doesNotContain (sauron);

A fenti példák csak a jéghegy csúcsa, de áttekintést nyújtanak arról, hogyan nézhet ki az állítások megírása ezzel a könyvtárral.

4. AssertJ in Action

Ebben a részben az AssertJ beállítására és annak lehetőségeinek feltárására összpontosítunk.

4.1. Elkezdeni

Ha egy könyvtár ösvénye egy osztályúton van, akkor az állítások engedélyezése ugyanolyan egyszerű, mint egyetlen statikus import hozzáadása a tesztosztályhoz:

statikus org.assertj.core.api.Assertions importálása; *;

4.2. Állítások írása

Egy állítás megírásához mindig azzal kell kezdenie, hogy az objektumot át kell adnia a Assertions.assertThat () módszer, majd követi a tényleges állításokat.

Fontos megjegyezni, hogy más könyvtárakkal ellentétben az alábbi kód még nem állít semmit és fog állítani soha sikertelen teszt:

assertThat (anyRefenceOrValue);

Ha kihasználja az IDE kódfeltöltési funkcióit, akkor az AssertJ állítások megírása hihetetlenül egyszerűvé válik a nagyon leíró módszerek miatt. Így néz ki az IntelliJ IDEA 16-ban:

Az IDE kód befejezési szolgáltatásai

Amint láthatja, több tucat kontextuális módszer közül választhat, amelyek csak elérhetőek Húr típus. Fedezzük fel részletesen ennek az API-nak néhányat és nézzünk meg néhány konkrét állítást.

4.3. Tárgy Állítások

Tárgyak Különböző módon összehasonlítható két objektum egyenlőségének meghatározása vagy egy objektum mezőinek vizsgálata.

Nézzünk kétféle módon összehasonlíthatjuk két objektum egyenlőségét. Tekintettel a következő kettőre Kutya tárgyakat fido és fidosClone:

public class Kutya {private String név; saját úszó súly; // szokásos getterek és beállítók} Kutya fido = új kutya ("Fido", 5,25); Kutya fidosClone = új kutya ("Fido", 5,25);

Összehasonlíthatjuk az egyenlőséget a következő állítással:

assertThat (fido) .isEqualTo (fidos-klón);

Ez nem fog sikerülni egyenlő() összehasonlítja az objektum hivatkozásokat. Ha inkább összehasonlítani akarjuk a tartalmukat, használhatjuk isEqualToComparingFieldByFieldRecursively () így:

assertThat (fido) .isEqualToComparingFieldByFieldRecursively (fidosClone);

Fido és fidosClone rekurzív mező mezők összehasonlításakor egyenlőek, mert az egyik objektum minden mezőjét összehasonlítják a másik objektum mezőjével.

Sok más állítási módszer létezik, amelyek különböző módon kínálják az objektumok összehasonlítását és összehúzását, valamint a területeiken történő vizsgálatot és állítást. Mindegyikük felfedezése érdekében forduljon a tisztviselőhöz AbstractObjectAssert dokumentáció.

4.4. Logikai Állítások

Néhány egyszerű módszer létezik az igazság tesztelésére:

  • igaz()
  • isFalse ()

Lássuk őket működés közben:

assertThat ("". isEmpty ()). isTrue ();

4.5. Iterálható / tömb Állítások

Egy Iterálható vagy egy Sor a tartalmuk létezésének többféle módon állítható. Az egyik leggyakoribb állítás az lenne, hogy ellenőrizze, hogy van-e Iterálható vagy Sor adott elemet tartalmaz:

Lista lista = Arrays.asList ("1", "2", "3"); assertThat (lista) .contains ("1");

vagy ha a Lista nem üres:

assertThat (lista) .isNotEmpty ();

vagy ha a Lista adott karakterrel kezdődik. Például „1”:

assertThat (lista) .startsWith ("1");

Ne feledje, hogy ha egynél több állítást szeretne létrehozni ugyanarra az objektumra, akkor könnyen összekapcsolhatja őket.

Itt van egy példa egy állításra, amely ellenőrzi, hogy a megadott lista nem üres-e, tartalmaz-e „1” elemet, nem tartalmaz semmilyen nullát, és tartalmazza a „2”, „3” elemek sorrendjét:

assertThat (list) .isNotEmpty () .contains ("1") .doesNotContainNull () .containsSequence ("2", "3");

Természetesen sokkal több lehetséges állítás létezik ezekre a típusokra. Mindegyikük felfedezése érdekében forduljon a tisztviselőhöz AbstractIterableAssert dokumentáció.

4.6. karakter Állítások

A karaktertípusokra vonatkozó állítások többnyire összehasonlításokat tartalmaznak, és még annak ellenőrzését is, hogy egy adott karakter a Unicode asztal.

Íme egy példa arra az állításra, amely ellenőrzi, hogy egy megadott karakter nem „a”, szerepel-e az Unicode táblában, nagyobb-e mint „b” és kisbetűs-e:

assertThat (someCharacter) .isNotEqualTo ('a') .inUnicode () .isGreaterThanOrEqualTo ('b') .isLowerCase ();

Az összes karaktertípus állításának részletes listáját lásd: AbstractCharacterAssert dokumentáció.

4.7. Osztály Állítások

Állítások a Osztály A típus főleg a mezők ellenőrzéséről szól, Osztály típusok, az annotációk jelenléte és az osztályzáróság.

Ha azt az osztályt akarja érvényesíteni Futható egy felület, egyszerűen meg kell írnia:

assertThat (Futható.osztály) .isInterface ();

vagy ha szeretné ellenőrizni, hogy az egyik osztály hozzárendelhető-e a másikhoz:

assertThat (Exception.class) .isAssignableFrom (NoSuchElementException.class);

Minden lehetséges Osztály állítások megtekinthetők a AbstractClassAssert dokumentáció.

4.8. File Állítások

File állítások arról szólnak, hogy ellenőrizzük, adott-e egy adott File példány létezik, könyvtár vagy fájl, bizonyos tartalommal rendelkezik, olvasható vagy kiterjesztést kapott.

Itt láthat egy példát egy állításra, amely ellenőrzi, hogy létezik-e egy adott fájl, fájl-e és nem könyvtár-e, olvasható és írható-e:

 assertThat (someFile). létezik () .isFile () .canRead () .canWrite ();

Az osztály összes lehetséges állítása megtekinthető a AbstractFileAssert dokumentáció.

4.9. Dupla / úszó / egész Állítások

Dupla / úszó / egész és egyéb Szám Típusok

A numerikus állítások a numerikus értékek összehasonlítására vonatkoznak egy adott eltoláson belül vagy anélkül. Például, ha azt szeretné ellenőrizni, hogy két érték megegyezik-e egy adott pontossággal, akkor a következőket tehetjük:

assertThat (5.1) .isEqualTo (5, withPrecision (1d));

Figyelje meg, hogy már importáltakat használunk withPrecision (Dupla eltolás) segítő módszer a generáláshoz Eltolás tárgyakat.

További állításokért látogassa meg az AbstractDoubleAssert dokumentációját.

4.10. InputStream Állítások

Csak egy van InputStream-specifikus állítás áll rendelkezésre:

  • hasSameContentAs (InputStream várható)

és működés közben:

assertThat (megadott) .hasSameContentAs (várható);

4.11. Térkép Állítások

Térkép az állítások lehetővé teszik annak ellenőrzését, hogy egy térkép külön-külön tartalmaz-e bizonyos bejegyzéseket, bejegyzéseket vagy kulcsokat / értékeket.

Itt láthat egy példát egy állításra, amely ellenőrzi, hogy egy adott térkép nem üres-e, tartalmaz-e „2” numerikus billentyűt, nem tartalmaz „10” numerikus billentyűt és tartalmaz-e bejegyzést: kulcs: 2, érték: „a”:

assertThat (térkép) .isNotEmpty () .containsKey (2) .doesNotContainKeys (10) .contains (bejegyzés (2, "a"));

További állításokat lásd AbstractMapAssert dokumentáció.

4.12. Dobható Állítások

Dobható az állítások lehetővé teszik például: a kivétel üzeneteinek, veremnyomainak ellenőrzését, annak ellenőrzését, vagy annak ellenőrzését, hogy kivételt dobtak-e már.

Vessünk egy pillantást egy állításra, amely ellenőrzi, hogy egy adott kivétel eldőlt-e, és amelynek „c” végződésű üzenete van:

assertThat (ex) .hasNoCause (). hasMessageEndingWith ("c");

További állításokért lásd az AbstractThrowableAssert dokumentációt.

5. Állítások leírása

A még magasabb szintű részletesség elérése érdekében dinamikusan létrehozott egyéni leírásokat hozhat létre állításaihoz. Ennek kulcsa a as (Karaktersorozat leírása, Object… args) módszer.

Ha így állítja be állítását:

assertThat (person.getAge ()) .as ("% s életkorának 100-nak kell lennie", person.getName ()) .isEqualTo (100);

ezt kapja meg a tesztek futtatásakor:

[Alex életkorának 100-nak kell lennie] várható: de a következő volt:

6. Java 8

Az AssertJ teljes mértékben kihasználja a Java 8 funkcionális programozási funkcióinak előnyeit. Merüljünk el egy példában, és lássuk működés közben. Először nézzük meg, hogyan csináljuk a Java 7-ben:

assertThat (fellowshipOfTheRing) .filteredOn ("verseny", HOBBIT) .Csak tartalmaz (sam, frodo, pippin, vidám);

Itt szűrünk egy gyűjteményt a Hobbit versenyről, és a Java 8-ban ilyesmit tehetünk:

assertThat (fellowshipOfTheRing) .filteredOn (karakter -> character.getRace (). egyenlő (HOBBIT)) .conconOnly (sam, frodo, pippin, vidám);

Az AssertJ Java8 képességeit a sorozat egy későbbi cikkében fogjuk vizsgálni. A fenti példákat az AssertJ weboldaláról vettük át.

7. Következtetés

Ebben a cikkben röviden feltártuk azokat a lehetőségeket, amelyeket az AssertJ nyújt számunkra, valamint a legnépszerűbb állításokat az alapvető Java típusokról.

Az összes példa és kódrészlet megvalósítása megtalálható egy GitHub projektben.

Következő » AssertJ Guava számára

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