JUnit ErrorCollector @Regel med eksempel
I et normalt scenario, nรฅr du identifiserer en feil under testkjรธring, stopper du testen, fikser feilen og kjรธrer testen pรฅ nytt.
Men JUnit har en litt annen tilnรฆrming. Med JUnit feilsamler, kan du fortsatt fortsette med testkjรธringen selv etter at et problem er funnet eller testen mislykkes. Error collector samler alle feilobjekter og rapporterer det bare รฉn gang etter at testkjรธringen er over.
Hvorfor bruke Error Collector?
Mens du skriver et testskript, รธnsker du รฅ utfรธre alle testene selv om en kodelinje mislykkes pรฅ grunn av nettverksfeil, pรฅstandsfeil eller annen grunn. I den situasjonen kan du fortsatt kjรธre testskript ved รฅ bruke en spesialfunksjon levert av JUnit kjent som "feilsamler".
For dette, JUnit bruker @Regelmerknad som brukes til รฅ lage et objekt med feilsamler. Nรฅr objektet for feilsamler er opprettet, kan du enkelt legge til alle feilene i objektet ved hjelp av metoden addError (kastbar feil). Som du vet, det Kastbar er superklassen til Unntak og Feil klasse i Java. Nรฅr du legger til feil pรฅ denne mรฅten, vil disse feilene logges inn JUnit testresultat.
Fordelen med รฅ legge til alle feil i en Error Collector er at du kan verifisere alle feilene samtidig. Dessuten, hvis skriptet mislykkes i midten, kan det fortsatt fortsette รฅ kjรธre det
Merknader: Ved bruk av enkel pรฅstand eller prรธv/fang-blokk vil det ikke vรฆre mulig รฅ bruke feilsamlermetoden.
Eksempelkode
For รฅ forstรฅ mer om Error Collector, se kodeeksemplet nedenfor som demonstrerer hvordan du oppretter et Error Collector-objekt og legger til alle feilene i det objektet. track problemet:
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.
}
}
Hva er @Rule i jUnit?
JUnit gir spesiell type hรฅndtering av tester, Testsak eller testsuite ved รฅ bruke @regelkommentar. Ved รฅ bruke @rule kan du enkelt legge til eller omdefinere oppfรธrselen til testen.
Det er flere innebygde regler gitt av JUnit API som en tester kan bruke, eller til og med du kan skrive vรฅr egen regel.
Se kodelinjen nedenfor, som viser hvordan du bruker @rule-annotering sammen med Error Collector:
@Rule public ErrorCollector collector= new ErrorCollector();
Eksempel ved bruk av ErrorCollector
For รฅ forstรฅ feilsamleren, la oss lage en klasse og en regel for รฅ samle alle feilene. Du vil legge til alle feilene ved รฅ bruke addError (kastbar) her.
Se koden nedenfor som ganske enkelt oppretter en regel som ikke er annet enn รฅ lage "Error Collector-objekt." Som videre brukes til รฅ legge til alle feilene for รฅ rapportere problemet pรฅ slutten:
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
La oss legge til testklassen ovenfor i en testlรธper og kjรธre den for รฅ samle alle feil. Se koden nedenfor:
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());
}
}
Utgang:
Se feilen trace som tracalle feilene pรฅ ett sted:
Fordeler med JUnit ErrorCollector
Du kan bruke JUnit pรฅstand for funksjonell eller GUI-validering, f.eks
- assertEquals(Strengmelding, Objekt forventet, Objekt faktisk) som sammenligner at to objekter er like.
- Pรฅ samme mรฅte hevder assertTrue (boolsk tilstand) at en betingelse er sann.
Ved รฅ bruke pรฅstand blir valideringstesten enkel. Men et stort problem er at testkjรธring vil stoppe selv om en enkelt pรฅstand mislykkes.
Testkontinuitet og gjenopprettingshรฅndtering er avgjรธrende for รฅ teste automatiseringssuksess. Error Collector er den beste mรฅten รฅ hรฅndtere slike scenarier pรฅ.
Sammendrag
- Junit error collector lar en test fortsette selv etter at det fรธrste problemet er funnet og testen mislykkes pรฅ slutten
- Error collector samler alle feilobjekter og rapporterer det bare, tross alt, testkjรธringen over
- Fordelen med รฅ legge til alle feil i en Error Collector er at du kan verifisere alle feilene samtidig
- Error collector legger ganske enkelt til feil ved รฅ bruke metoden addError (kastbar feil) levert av ErrorCollector.java.

