JUnit ErrorCollector @Rule példával

Tartalomjegyzék:

Anonim

Normális esetben, amikor bármilyen hibát észlel a teszt végrehajtása során, leállítja a tesztet, kijavítja a hibát és újra lefuttatja a tesztet.

De a JUnit kissé más megközelítést alkalmaz. A JUnit hibagyűjtővel továbbra is folytathatja a teszt futtatását akkor is, ha egy problémát talált vagy a teszt sikertelen volt. A hibagyűjtő az összes hibaobjektumot összegyűjti, és csak egyszer jelenti be a teszt végrehajtásának befejezése után.

Ebben az oktatóanyagban megtanulja-

  • Mi a hibagyűjtő a JUnit-ben?
  • Mi a @Rule a jUnitben?
  • Példa a ErrorCollector használatára
  • A JUnit ErrorCollector előnyei

Miért érdemes használni a Error Collector szolgáltatást?

Tesztszkript írásakor az összes tesztet akkor is el kell végeznie, ha bármelyik kódsor meghibásodik hálózati hiba, állításhiba vagy bármilyen más ok miatt. Ebben a helyzetben továbbra is folytathatja a tesztfájlok futtatását a JUnit által biztosított "hibagyűjtő" néven ismert speciális szolgáltatás használatával.

Ehhez a JUnit @Rule annotációt használ, amely a hibagyűjtő objektum létrehozására szolgál. A hibagyűjtő objektum létrehozása után az összes hibát könnyen hozzáadhatja az objektumhoz az addError (Dobható hiba) metódus használatával . Mint tudják, a Throwable a Kivétel és a Hiba osztály szuper osztálya a Java-ban. Ha ilyen módon ad hozzá hibákat, ezek a hibák naplózásra kerülnek a JUnit teszt eredményében.

A Error Collector összes hibájának összeadásának az az előnye, hogy egyszerre ellenőrizheti az összes hibát. Továbbá, ha a szkript középen nem sikerül, akkor is folytathatja a végrehajtását

Megjegyzés : Egyszerű állítás vagy try / catch blokk használata esetén a hibagyűjtő módszer használata nem lehetséges.

Minta kód

Ha többet szeretne megtudni a Error Collectorról, olvassa el az alábbi kódpéldát, amely bemutatja, hogyan hozhat létre Error Collector objektumot, és adja hozzá az objektum összes hibáját a probléma nyomon követéséhez:

csomag guru99.junit;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Szabálypublic ErrorCollector collector = új ErrorCollector ();@Tesztpublic void példa () {collector.addError (new Throwable ("Hiba van az első sorban"));collector.addError (new Throwable ("Hiba van a második sorban"));collector.checkThat (getResults (),not (tartalmazzaString ("itt hiba van")));// az összes kódsor végrehajtásra kerül, a végén pedig egy kombinált hiba fog végrehajtódnibe kell jelentkezni.}}

Mi a @Rule a jUnitben?

A JUnit a tesztek, a Teszteset vagy a tesztcsomag speciális kezelését biztosítja a @rule kommentár használatával . A @rule használatával könnyen hozzáadhatja vagy újra meghatározhatja a teszt viselkedését.

A JUnit API számos beépített szabályt tartalmaz, amelyeket egy tesztelő használhat, vagy akár Ön is megírhatja saját szabályunkat.

Lásd az alábbi kódsort, amely bemutatja a @rule annotáció és a Error Collector együttes használatát:

@Szabálypublic ErrorCollector collector = új ErrorCollector ();

Példa a ErrorCollector használatára

A hibagyűjtő megértése érdekében hozzunk létre egy osztályt és szabályt az összes hiba összegyűjtésére. Az összes hibát hozzáadja az addError (dobható) használatával.

Lásd az alábbi kódot, amely egyszerűen létrehoz egy szabályt, amely nem más, mint a "Hibagyűjtő objektum" létrehozása. Amelyet tovább használunk az összes hiba hozzáadásához annak érdekében, hogy a probléma végén jelentést tegyünk:

ErrorCollectorExample.java

csomag guru99.junit;import org.junit.Assert;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Szabálypublic ErrorCollector collector = új ErrorCollector ();@Tesztpublic void példa () {collector.addError (new Throwable ("Hiba van az első sorban"));collector.addError (new Throwable ("Hiba van a második sorban"));System.out.println ("Hello");próbáld ki {Assert.assertTrue ("A" == "B");} fogás (dobható t) {gyűjtő.addError (t);}System.out.println ("Világ !!!!");}}

TestRunner.java

Vegyük fel a fenti tesztosztályt egy tesztfutóba, és hajtsuk végre az összes hiba összegyűjtése érdekében. Lásd az alábbi kódot:

csomag guru99.junit;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;nyilvános osztály TestRunner {public static void main (String [] érvel) {Eredmény eredménye = JUnitCore.runClasses (ErrorCollectorExample.class);for (Hiba hiba: result.getFailures ()) {System.out.println (fail.String ());}System.out.println ("Result ==" + result.wasSuccessful ());}}

Kimenet:

Tekintse meg a hiba nyomát, amely az összes hibát egy helyen követi:

A JUnit ErrorCollector előnyei

Használhatja a JUnit-állítást funkcionális vagy GUI-ellenőrzéshez, pl

  1. assertEquals (String üzenet, Objektum várható, Objektum tényleges), amelyek összehasonlítják, hogy két objektum egyenlő.
  2. Hasonlóképpen az assertTrue (logikai feltétel) azt állítja, hogy egy feltétel igaz.

Az állítás használatával az ellenőrzési teszt egyszerűvé válik. De az egyik fő kérdés, hogy a teszt végrehajtása akkor is leáll, ha egyetlen állítás kudarcot vall.

A teszt folyamatossága és a helyreállítás kezelése elengedhetetlen az automatizálás sikerének teszteléséhez. A Error Collector a legjobb módszer az ilyen jellegű esetek kezelésére.

Összegzés :

  • A Junit hibagyűjtő lehetővé teszi a teszt folytatását az első probléma megtalálása után is, és a teszt a végén nem sikerül
  • A hibagyűjtő összegyűjti az összes hibaobjektumot, és csak a jelentés végrehajtásáról számol be
  • A Error Collector összes hibájának összeadásának az az előnye, hogy egyszerre ellenőrizheti az összes hibát
  • A hibagyűjtő egyszerűen hozzáadja a hibákat a ErrorCollector.java által biztosított addError (dobható hibás) módszerrel.