JUnit ErrorCollector @Rule s příkladem

V normálním scénáři, kdykoli během provádění testu zjistíte jakoukoli chybu, zastavíte test, opravíte chybu a znovu spustíte test.

Ale JUnit má trochu jiný přístup. S JUnit sběrače chyb, můžete stále pokračovat v provádění testu, i když je nalezen problém nebo test selže. Kolektor chyb shromažďuje všechny chybové objekty a hlásí je pouze jednou po dokončení testu.

Proč používat nástroj Error Collector?

Při psaní testovacího skriptu chcete provést všechny testy, i když některý řádek kódu selže kvůli selhání sítě, selhání výrazu nebo z jakéhokoli jiného důvodu. V takové situaci můžete stále pokračovat ve spouštění testovacího skriptu pomocí speciální funkce poskytované společností JUnit známý jako „sběratel chyb“.

Pro tohle, JUnit použití @Anotace pravidla který se používá k vytvoření objektu kolektoru chyb. Jakmile je objekt pro kolektor chyb vytvořen, můžete do objektu snadno přidat všechny chyby pomocí metody addError (vyhoditelná chyba). Jak víte, to Vrhací je super třída Výjimka si Chyba třída v Java. Když přidáte chyby tímto způsobem, budou tyto chyby přihlášeny JUnit Výsledek testu .

Výhodou přidání všech chyb do Kolektoru chyb je, že můžete ověřit všechny chyby najednou. Také pokud skript uprostřed selže, může stále pokračovat v jeho provádění

Hodnocení: V případě použití jednoduchého claimu nebo try/catch bloku nebude použití metody sběru chyb možné.

Ukázkový kód

Chcete-li porozumět více o nástroji Error Collector, podívejte se na níže uvedený příklad kódu, který ukazuje, jak vytvořit objekt Error Collector a přidat všechny chyby do tohoto objektu, abyste mohli problém sledovat:

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.		
    }		
}	

Co je @Rule v jUnit?

JUnit poskytuje speciální způsob zpracování testů, Testovací případ nebo testovací sadu pomocí @anotace pravidla. Pomocí @rule můžete snadno přidat nebo předefinovat chování testu.

Poskytuje několik vestavěných pravidel JUnit API, které může používat tester, nebo dokonce můžete napsat naše vlastní pravidlo.

Viz níže řádek kódu, který ukazuje, jak používat anotaci @rule spolu s Error Collector:

@Rule				
public ErrorCollector collector= new ErrorCollector();

Příklad použití ErrorCollector

Abychom porozuměli kolektoru chyb, vytvořte třídu a pravidlo pro shromažďování všech chyb. Zde přidáte všechny chyby pomocí addError(throwable).

Podívejte se níže na kód, který jednoduše vytvoří pravidlo, které není nic jiného než vytvoření objektu „Error Collector“. Což se dále používá k přidání všech chyb, aby se problém nahlásil na konci:

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

Pojďme přidat výše uvedenou třídu testu do testovacího běhu a spustit jej, aby se shromáždily všechny chyby. Viz níže kód:

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());							
   }		
}      

Výstup:

Podívejte se na trasování selhání, které sleduje všechny chyby na jednom místě:

TestRunner.Java Výstup

Výhody JUnit ErrorCollector

Můžeš použít JUnit tvrzení pro funkční nebo GUI ověření, např

  1. ssesEquals (zpráva řetězce, očekávaný objekt, skutečný objekt), které porovnávají, že dva objekty jsou si rovny.
  2. Podobně asertTrue (booleovská podmínka) tvrdí, že podmínka je pravdivá.

Pomocí asertace se ověřovací test stává snadným. Ale jedním hlavním problémem je, že provádění testu se zastaví, i když selže jediné tvrzení.

Pro úspěšnost automatizace testů je klíčová kontinuita testování a zpracování obnovy. Sběratel chyb je nejlepší způsob, jak zvládnout takovéto scénáře.

Shrnutí

  • Junit error Collector umožňuje pokračovat v testu i poté, co je nalezen první problém a test na konci selže
  • Kolektor chyb shromažďuje všechny chybové objekty a hlásí je pouze po ukončení testu
  • Výhodou přidání všech chyb do Kolektoru chyb je, že můžete ověřit všechny chyby najednou
  • Kolektor chyb jednoduše přidává chyby pomocí metody addError(throwable err), kterou poskytuje ErrorCollector.java.

Shrňte tento příspěvek takto: