JUnit ErrorCollector @Rule példával
⚡ Okos összefoglaló
JUnit Az ErrorCollector egy olyan szabály, amely lehetővé teszi a teszt folytatását egy hiba után, összegyűjti az összes hibaobjektumot, és együtt jelenti azokat, amikor a tesztmetódus befejeződött a leállás helyett.ping az első problémánál.

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 kissé eltérő megközelítést alkalmaz. JUnit hibagyűjtővel folytathatja a teszt végrehajtását akkor is, ha problémát talál, vagy a teszt sikertelen. A hibagyűjtő összegyűjti az összes hibaobjektumot, és csak egyszer jelenti azokat, a teszt végrehajtásának befejezése után.
Miért használja az Error Collectort?
Tesztszkript írása közben minden tesztet végre kell hajtani, még akkor is, ha bármelyik kódsor hálózati hiba, ellenőrzési hiba vagy bármilyen más ok miatt meghiúsul. Ebben az esetben a tesztszkript végrehajtása továbbra is folytatható a(z) JUnit „hibagyűjtőként” ismert.
Ezért, JUnit használja az @Szabály megjegyzés, amely egy hibagyűjtő objektum létrehozására szolgál. Miután a hibagyűjtő objektum létrejött, a metódus segítségével könnyedén hozzáadhatja az összes hibát az objektumhoz. addError (dobható hiba). Amint tudod, Dobható a szuperosztálya a kivétel és a hiba osztályok JavaAmikor ilyen módon ad hozzá hibákat, ezek a hibák naplózva lesznek a JUnit teszteredmény.
Az összes hiba Error Collectorba való felvételének az az előnye, hogy egyszerre ellenőrizheti az összes hibát. Továbbá, ha a szkript közben meghiúsul, a végrehajtás a tesztelési metódus végéig folytatódik.
MegjegyzésekEgyszerű assert vagy try/catch blokk használata esetén a hibagyűjtő metódus nem használható.
Minta kód
A Hibagyűjtővel kapcsolatos további információkért lásd az alábbi kódpéldát, amely bemutatja, hogyan hozhat létre egy Hibagyűjtő objektumot, és hogyan adhat hozzá az összes hibát ehhez az objektumhoz. track a probléma:
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. } }
Jegyzet: ez egy szemléltető példatract, nem egy lefordítható fájl. A záró kommentje egy második sorba tördelődik, kezdő // nélkül, és a getResults() függvény, valamint a Hamcrest egyezők nem jelennek meg. A teljes futtatható verzió az alábbiakban található. Példa az ErrorCollector használatára.
Mi az a @Rule a következőben: JUnit?
JUnit speciális tesztkezelést biztosít, Teszt eset vagy tesztcsomagot a @Szabály megjegyzésA @Rule használatával könnyedén hozzáadhatod vagy újradefiniálhatod a teszt viselkedését.
Számos beépített szabály létezik, amelyeket a JUnit API, amelyet egy tesztelő használhat, és saját szabályt is írhatsz. A szabálymezőnek nyilvánosnak, nem statikusnak és TestRule-t megvalósító típusúnak kell lennie.
Lásd az alábbi kódsort, amely bemutatja, hogyan kell használni a @Rule annotációt az Error Collectorral együtt:
@Rule public ErrorCollector collector= new ErrorCollector();
JUnit 5-os megjegyzés: A Jupiter a szabályokat az Extension API-val helyettesítette, így az @Rule és az ErrorCollector nem létezik az org.junit.jupiter fájlban. A legközelebbi megfelelőik az Assertions.assertAll() és az AssertJ SoftAssertions. A JUnit Az itt látható 4-es kód még mindig fut a veterán motoron. Lásd a JUnit annotációk oktatóanyag a teljes térképhezping.
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. Itt az addError(throwable) használatával adhatjuk hozzá az összes hibát.
Lásd az alábbi kódot, amely egyszerűen létrehoz egy szabályt, ami nem más, mint egy „Hibagyűjtő objektum”. Továbbá arra szolgál, hogy az összes hibát hozzáadja, hogy a probléma a végén jelentést készítsen:
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 tesztfuttatóhoz, és futtassuk le 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:
Lásd a kudarcot trace, amely tracminden hibát egy helyen. JUnit A nézet egy futtatást számol, de két hibát és egy sikertelenséget jelez, mindegyiket saját sorszámmal:
Előnyei JUnit ErrorCollector
Használhatja a JUnit kijelentés funkcionális vagy grafikus felhasználói felület validációjához, például:
- assertEquals(String üzenet, Várt objektum, Aktuális objektum), amely összehasonlítja, hogy két objektum egyenlő-e.
- Hasonlóképpen, az assertTrue(logikai feltétel) azt állítja, hogy egy feltétel igaz.
Az állítások használatával a validációs tesztelés egyszerűvé válik. Az egyik fő probléma azonban az, hogy a teszt végrehajtása akkor is leáll, ha egyetlen állítás is meghiúsul.
A tesztfolytonosság és a helyreállítás kezelése kulcsfontosságú a tesztautomatizálás sikeréhez, és hosszú távú környezetben a legfontosabb. Selenium olyan folyamatokat, ahol a böngésző újraindítása minden sikertelen ellenőrzés után költséges. Az Error Collector a legjobb módja az ilyen forgatókönyvek kezelésének.

