Într-un scenariu normal, ori de câte ori identificați orice eroare în timpul executării testului, ați opri testul, remediați eroarea și reluați testul.
Dar JUnit are o abordare ușor diferită. Cu colectorul de erori JUnit, puteți continua cu executarea testului chiar și după ce a fost găsită o problemă sau testul eșuează. Colectorul de erori colectează toate obiectele de eroare și le raportează o singură dată după terminarea executării testului.
În acest tutorial, veți învăța-
- Ce este colectorul de erori în JUnit?
- Ce este @Rule în jUnit?
- Exemplu folosind ErrorCollector
- Avantajele JUnit ErrorCollector
De ce să folosiți Error Collector?
În timp ce scrieți un script de testare, doriți să executați toate testele, chiar dacă orice linie de cod eșuează din cauza eșecului rețelei, a eșecului afirmării sau a oricărui alt motiv. În această situație, puteți continua să executați scriptul de testare folosind o caracteristică specială furnizată de JUnit cunoscută sub numele de „colector de erori”.
Pentru aceasta, JUnit folosește adnotarea @Rule care este utilizată pentru a crea un obiect de colectare a erorilor. Odată creat obiectul pentru colectorul de erori, puteți adăuga cu ușurință toate erorile în obiect folosind metoda addError (Eroare aruncabilă). După cum știți, Throwable este super-clasa clasei Exception and Error din Java. Când adăugați erori în acest fel, aceste erori vor fi înregistrate în rezultatul testului JUnit.
Avantajul adăugării tuturor erorilor într-un colector de erori este că puteți verifica toate erorile simultan. De asemenea, dacă scriptul eșuează la mijloc, poate continua să-l execute
Notă : În cazul utilizării blocului simplu asert sau try / catch, nu va fi posibilă utilizarea metodei de colectare a erorilor.
Cod simplu
Pentru a înțelege mai multe despre Error Collector, consultați mai jos un exemplu de cod care arată cum să creați un obiect Error Collector și să adăugați toate erorile din acel obiect pentru a urmări problema:
pachet guru99.junit;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Regulăpublic ErrorCollector collector = nou ErrorCollector ();@Testpublic nul exemplu () {collector.addError (nou Throwable ("Există o eroare în prima linie"));collector.addError (nou Throwable ("Există o eroare în a doua linie"));collector.checkThat (getResults (),not (containsString ("aici este o eroare")));// se vor executa toate liniile de cod și la sfârșit se va produce un eșec combinatfii conectat.}}
Ce este @Rule în jUnit?
JUnit oferă un tip special de gestionare a testelor, Test Case sau test suite folosind adnotarea @rule . Folosind @rule, puteți adăuga sau redefini cu ușurință comportamentul testului.
Există mai multe reguli încorporate furnizate de API-ul JUnit pe care un tester le poate folosi sau chiar dvs. puteți scrie propria regulă.
Vedeți mai jos linia de cod, care arată cum să utilizați adnotarea @rule împreună cu Error Collector:
@Regulăpublic ErrorCollector collector = nou ErrorCollector ();
Exemplu folosind ErrorCollector
Pentru a înțelege colectorul de erori, să creăm o clasă și o regulă pentru a colecta toate erorile. Aici veți adăuga toate erorile folosind addError (aruncabil).
Vedeți mai jos codul care creează pur și simplu o regulă care nu este altceva decât crearea „obiectului de colecție de erori”. Care este folosit în continuare pentru a adăuga toate erorile pentru a raporta problema la final:
ErrorCollectorExample.java
pachet guru99.junit;import org.junit.Assert;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Regulăpublic ErrorCollector collector = nou ErrorCollector ();@Testpublic nul exemplu () {collector.addError (nou Throwable ("Există o eroare în prima linie"));collector.addError (nou Throwable ("Există o eroare în a doua linie"));System.out.println ("Bună ziua");încerca {Assert.assertTrue ("A" == "B");} captură (aruncabil t) {collector.addError (t);}System.out.println („Lumea !!!!”);}}
TestRunner.java
Să adăugăm clasa de test de mai sus într-un test runner și să o executăm pentru a colecta toate erorile. A se vedea codul de mai jos:
pachet guru99.junit;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;clasă publică TestRunner {public static main main (String [] args) {Rezultat rezultat = JUnitCore.runClasses (ErrorCollectorExample.class);pentru (Eșec de eșec: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Result ==" + result.wasSuccessed ());}}
Ieșire:
Vedeți urmele de eșec care urmăresc toate erorile într-un singur loc:
Avantajele JUnit ErrorCollector
Puteți utiliza afirmația JUnit pentru validare funcțională sau GUI, de ex
- assertEquals (mesaj șir, obiect așteptat, obiect real) care compară faptul că două obiecte sunt egale.
- În mod similar, assertTrue (condiție booleană) afirmă că o condiție este adevărată.
Folosind afirmația, testul de validare devine ușor. Dar o problemă majoră este că execuția testului se va opri chiar dacă o singură afirmație eșuează.
Continuitatea testelor și gestionarea recuperării sunt cruciale pentru testarea succesului automatizării. Error Collector este cel mai bun mod de a gestiona astfel de scenarii.
Rezumat :
- Colectorul de erori Junit permite testului să continue chiar și după ce prima problemă a fost găsită și testul eșuează la sfârșit
- Colectorul de erori colectează toate obiectele de eroare și le raportează numai, la urma urmei, executarea testului
- Avantajul adăugării tuturor erorilor într-un colector de erori este că puteți verifica toate erorile simultan
- Colectorul de erori adaugă pur și simplu erori folosind metoda addError (eroare aruncabilă) furnizată de ErrorCollector.java.