I et normalt scenario, når du identifiserer en feil under testutførelsen, vil du stoppe testen, fikse feilen og kjøre testen på nytt.
Men JUnit har en litt annen tilnærming. Med JUnit-feilsamler kan du fortsatt fortsette med testutførelsen, selv etter at et problem er funnet eller testen mislykkes. Feilsamler samler alle feilobjekter og rapporterer det bare en gang etter at testutførelsen er over.
I denne veiledningen vil du lære-
- Hva er feiloppsamler i JUnit?
- Hva er @Rule i jUnit?
- Eksempel på å bruke ErrorCollector
- Fordeler med JUnit ErrorCollector
Hvorfor bruke Error Collector?
Mens du skriver et testskript, vil du utføre alle testene, selv om en kodelinje mislykkes på grunn av nettverksfeil, påstandssvikt eller annen grunn. I den situasjonen kan du fortsatt fortsette å utføre testskript ved hjelp av en spesiell funksjon levert av JUnit, kjent som "error collector".
For dette bruker JUnit @Rule-kommentar som brukes til å lage et objekt med feiloppsamler . Når objektet for feiloppsamler er opprettet, kan du enkelt legge til alle feilene i objektet ved hjelp av metoden addError (kastbar feil). Som du vet, at Throwable er den super klassen Exception og Feil klasse i Java. Når du legger til feil på denne måten, blir disse feilene logget inn i JUnit-testresultatet.
Fordelen med å legge til alle feil i en Feilsamler er at du kan bekrefte alle feilene samtidig. Hvis skriptet mislykkes i midten, kan det fortsatt fortsette å utføre det
Merk : Hvis du bruker enkel påstand eller prøve / fangst-blokk, vil det ikke være mulig å bruke feiloppsamlingsmetoden.
Eksempelkode
For å forstå mer om Error Collector, se nedenfor kodeeksempel som demonstrerer hvordan du lager et Error Collector-objekt og legger til alle feilene i det objektet for å spore problemet:
pakke guru99.junit;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Regeloffentlig ErrorCollector samler = ny ErrorCollector ();@Testoffentlig ugyldig eksempel () {collector.addError (ny Throwable ("Det er en feil i første linje"));collector.addError (ny Throwable ("Det er en feil i andre linje"));collector.checkThat (getResults (),ikke (inneholderString ("her er en feil")));// alle kodelinjer vil kjøres og til slutt vil en kombinert feilvære logget inn.}}
Hva er @Rule i jUnit?
JUnit tilbyr spesiell håndtering av tester, Test Case eller test suite ved å bruke @rule-kommentar . Ved hjelp av @rule kan du enkelt legge til eller omdefinere testens oppførsel.
Det er flere innebygde regler gitt av JUnit API som en tester kan bruke, eller til og med kan du skrive vår egen regel.
Se under kodelinjen, som viser hvordan du bruker @rule-kommentar sammen med Error Collector:
@Regeloffentlig ErrorCollector samler = ny ErrorCollector ();
Eksempel på å bruke ErrorCollector
For å forstå feilsamleren, la oss lage en klasse og en regel for å samle alle feilene. Du vil legge til alle feilene ved hjelp av addError (kastbar) her.
Se koden nedenfor som ganske enkelt oppretter en regel som ikke er annet enn å lage "Error Collector-objekt." Som brukes videre til å legge til alle feilene for å rapportere problemet på slutten:
ErrorCollectorExample.java
pakke guru99.junit;import org.junit.Assert;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Regeloffentlig ErrorCollector samler = ny ErrorCollector ();@Testoffentlig ugyldig eksempel () {collector.addError (ny Throwable ("Det er en feil i første linje"));collector.addError (ny Throwable ("Det er en feil i andre linje"));System.out.println ("Hei");prøv {Assert.assertTrue ("A" == "B");} fangst (kastbar t) {collector.addError (t);}System.out.println ("Verden !!!!");}}
TestRunner.java
La oss legge til over testklassen i en testløper og utføre den for å samle alle feil. Se nedenfor kode:
pakke guru99.junit;importer org.junit.runner.JUnitCore;importer org.junit.runner.Result;import org.junit.runner.notification.Failure;offentlig klasse TestRunner {public static void main (String [] args) {Resultatresultat = JUnitCore.runClasses (ErrorCollectorExample.class);for (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Resultat ==" + result.wasSuccessful ());}}
Produksjon:
Se feilsporingen som sporer alle feilene på ett sted:
Fordeler med JUnit ErrorCollector
Du kan bruke JUnit-påstand for funksjonell eller GUI-validering, f.eks
- assertEquals (strengmelding, forventet objekt, faktisk objekt) som sammenligner at to objekter er like.
- På samme måte hevder assertTrue (boolsk tilstand) at en tilstand er sann.
Ved å bruke påstand blir valideringstest enkelt. Men et hovedproblem er at testutførelsen vil stoppe selv om en eneste påstand mislykkes.
Testkontinuitet og håndtering av utvinning er avgjørende for å teste automatiseringssuksess. Error Collector er den beste måten å håndtere slike slags scenarier på.
Sammendrag :
- Junit feiloppsamler lar en test fortsette, selv etter at det første problemet er funnet og testen mislykkes på slutten
- Feilsamler samler alle feilobjekter og rapporterer det bare, tross alt, testutførelsen er over
- Fordelen med å legge til alle feil i en Feilsamler er at du kan bekrefte alle feilene samtidig
- Feilsamler legger bare til feil ved hjelp av metoden addError (kastbar feil) levert av ErrorCollector.java.