JUnit ErrorCollector @Rule példával

Normál forgatókönyv esetén, ha 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 JUnit kicsit más megközelítést alkalmaz. Val vel JUnit hibagyűjtő, továbbra is folytathatja a teszt végrehajtását, még akkor is, ha hibát talált vagy a teszt sikertelen. A Hibagyűjtő összegyűjti az összes hibaobjektumot, és csak egyszer jelenti azt a tesztvégrehajtás után.

Miért használja az Error Collectort?

Tesztszkript írásakor az összes tesztet végre kell hajtani, még akkor is, ha bármely kódsor meghibásodik hálózati hiba, érvényesítési hiba vagy bármilyen más ok miatt. Ebben a helyzetben továbbra is folytathatja a tesztszkript végrehajtását a által biztosított speciális szolgáltatás használatával JUnit „hibagyűjtőként” ismert.

Ezért, JUnit használ @Szabály megjegyzés amely egy hibagyűjtő objektum létrehozására szolgál. Miután létrehozta a hibagyűjtő objektumát, a metódus segítségével könnyedén hozzáadhatja az összes hibát az objektumhoz addError (dobható hiba). Mint tudod, az Dobható a szuper osztálya kivétel és a hiba osztályban Java. Ha ilyen módon ad hozzá hibákat, ezek a hibák be lesznek jelentkezve JUnit teszteredmény .

Az összes hiba hozzáadásának előnye egy hibagyűjtőben, hogy az összes hibát egyszerre ellenőrizheti. Továbbá, ha a szkript meghiúsul a közepén, továbbra is folytathatja a végrehajtását

Megjegyzések: Egyszerű assert 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 az Error Collector-ról, tekintse meg az alábbi kódpéldát, amely bemutatja, hogyan kell létrehozni egy Error Collector objektumot, és hozzáadni az objektum összes hibáját a probléma nyomon követéséhez:

package guru99.junit;		

import org.junit.Rule;		
import org.junit.Test;		
import org.junit.rules.ErrorCollector;		

public class ErrorCollectorExample {				
    @Rule		
    public ErrorCollector collector = new ErrorCollector();							

    @Test		
    public void example() {					
    collector.addError(new Throwable("There is an error in first line"));							
    collector.addError(new Throwable("There is an error in second line"));							
    collector.checkThat(getResults(),			
                not(containsString("here is an error")));			
    // all lines of code will execute and at the end a combined failure will		
    be logged in.		
    }		
}	

Mi az a @Rule a jUnitban?

JUnit speciális tesztkezelést biztosít, Teszt eset vagy tesztcsomag használatával @szabály megjegyzés. A @rule használatával egyszerűen hozzáadhatja vagy újradefiniálhatja a teszt viselkedését.

Számos beépített szabályt biztosít JUnit API, amelyet egy tesztelő használhat, vagy akár saját szabályt is írhat.

Lásd az alábbi kódsort, amely bemutatja, hogyan kell használni a @rule annotációt az Error Collector mellett:

@Rule				
public ErrorCollector collector= new ErrorCollector();

Példa az ErrorCollector használatára

A hibagyűjtő megértéséhez hozzunk létre egy osztályt és egy szabályt az összes hiba összegyűjtésére. Az összes hibát hozzáadja az addError(throwable) segítségével.

Lásd az alábbi kódot, amely egyszerűen létrehoz egy szabályt, amely nem más, mint az „Error Collector objektum” létrehozása. A továbbiakban az összes hiba hozzáadására szolgál, hogy a végén jelentse a problémát:

ErrorCollectorExample.java

package guru99.junit;		

import org.junit.Assert;		
import org.junit.Rule;		
import org.junit.Test;		
import org.junit.rules.ErrorCollector;		

public class ErrorCollectorExample {				
    @Rule		
    public ErrorCollector collector = new ErrorCollector();							

    @Test		
    public void example() {					
    collector.addError(new Throwable("There is an error in first line"));							
    collector.addError(new Throwable("There is an error in second line"));							

        System.out.println("Hello");					
        try {			
            Assert.assertTrue("A " == "B");					
        } catch (Throwable t) {					
            collector.addError(t);					
        }		
        System.out.println("World!!!!");					
    }		
}		

TestRunner.java

Adjuk hozzá a fenti tesztosztályt egy tesztfutóhoz, és hajtsuk végre az összes hiba összegyűjtéséhez. Lásd az alábbi kódot:

package guru99.junit;		

import org.junit.runner.JUnitCore;		
import org.junit.runner.Result;		
import org.junit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
      Result result = JUnitCore.runClasses(ErrorCollectorExample.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      

output:

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

TestRunner.Java teljesítmény

Előnyei JUnit ErrorCollector

Használhatja JUnit állítás funkcionális vagy grafikus felhasználói felület érvényesítéséhez, pl

  1. assertEquals (karakterlánc üzenet, várt objektum, aktuális objektum), 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 érvényesítési teszt egyszerűvé válik. De az egyik fő probléma az, hogy a teszt végrehajtása akkor is leáll, ha egyetlen állítás meghiúsul.

A tesztelés folytonossága és a helyreállítás kezelése kulcsfontosságú a tesztautomatizálás sikeréhez. Az Error Collector a legjobb módja az ilyen forgatókönyvek kezelésére.

Összegzésként

  • A Junit hibagyűjtő lehetővé teszi a teszt folytatását még az első probléma megtalálása után is, és a teszt a végén meghiúsul
  • A hibagyűjtő összegyűjti az összes hibaobjektumot, és csak azt jelenti, végül a teszt végrehajtása véget ért
  • Az összes hiba hozzáadásának előnye az Error Collectorban, hogy az összes hibát egyszerre ellenőrizheti
  • A Hibagyűjtő egyszerűen hozzáadja a hibákat az ErrorCollector.java által biztosított addError(throwable err) metódussal.