Parastā scenārijā ikreiz, kad testa izpildes laikā konstatējat kādu kļūdu, jūs pārtraucat testu, novēršat kļūdu un atkārtoti veicat testu.
Bet JUnit ir nedaudz atšķirīga pieeja. Izmantojot JUnit kļūdu savācēju, jūs joprojām varat turpināt testa izpildi pat pēc tam, kad problēma ir atrasta vai pārbaude neizdodas. Kļūdu savācējs apkopo visus kļūdu objektus un ziņo par tiem tikai vienu reizi pēc testa izpildes beigām.
Šajā apmācībā jūs uzzināsiet
- Kas ir kļūdu savācējs JUnit?
- Kas ir @Rule jUnit?
- Piemērs, izmantojot ErrorCollector
- JUnit ErrorCollector priekšrocības
Kāpēc izmantot Error Collector?
Rakstot testa skriptu, vēlaties veikt visus testus, pat ja kāda koda rindiņa neizdodas tīkla kļūmes, apgalvojuma kļūmes vai kāda cita iemesla dēļ. Šajā situācijā jūs joprojām varat turpināt testa skripta izpildi, izmantojot īpašu funkciju, ko nodrošina JUnit, kas pazīstama kā "kļūdu savācējs".
Tam JUnit izmanto @Rule anotāciju, kas tiek izmantota, lai izveidotu kļūdu savācēja objektu. Kad objekts kļūdu savācējam ir izveidots, jūs varat viegli pievienot visas kļūdas objektā, izmantojot metodi addError (izmetama kļūda). Kā jūs zināt, ka Throwable ir Java izņēmuma un kļūdu klases superklases . Šādi pievienojot kļūdas, šīs kļūdas tiks reģistrētas JUnit testa rezultātos.
Visu kļūdu pievienošanas kļūdu savācējā priekšrocība ir tā, ka jūs varat pārbaudīt visas kļūdas vienlaikus. Turklāt, ja skripts neizdodas vidū, tas joprojām var turpināt tā izpildi
Piezīme . Ja izmantojat vienkāršu apgalvojumu vai mēģinājumu / ķeršanas bloku, kļūdu savācēja metode nebūs iespējama.
Koda paraugs
Lai uzzinātu vairāk par kļūdu savācēju, skatiet tālāk redzamo kodu piemēru, kurā parādīts, kā izveidot kļūdu savācēja objektu un pievienojiet visas šī objekta kļūdas, lai izsekotu problēmu:
pakete guru99.junit;importēt org.junit.Rule;importēt org.junit.Test;importēt org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Rulepublic ErrorCollector collector = jauns ErrorCollector ();@Pārbaudepublic void piemērs () {collector.addError (new Throwable ("Pirmajā rindā ir kļūda"));collector.addError (new Throwable ("Otrajā rindā ir kļūda"));collector.checkThat (getResults (),not (saturString ("šeit ir kļūda")));// tiks izpildītas visas koda rindas, un beigās kļūs kombinēta kļūmeesi pieteicies.}}
Kas ir @Rule jUnit?
JUnit nodrošina īpašu testu, testu lietu vai testu komplektu apstrādi , izmantojot @rule anotāciju . Izmantojot @rule, jūs varat viegli pievienot vai atkārtoti noteikt testa darbību.
JUnit API nodrošina vairākus iebūvētus noteikumus, kurus testeris var izmantot, vai pat jūs varat uzrakstīt mūsu pašu kārtulu.
Skatiet zemāk esošo koda rindu, kurā parādīts, kā izmantot @rule anotāciju kopā ar Error Collector:
@Rulepublic ErrorCollector collector = jauns ErrorCollector ();
Piemērs, izmantojot ErrorCollector
Lai saprastu kļūdu savācēju, izveidosim klasi un kārtulu, lai apkopotu visas kļūdas. Šeit pievienosiet visas kļūdas, izmantojot addError (izmetamu).
Skatiet zemāk redzamo kodu, kas vienkārši izveido kārtulu, kas ir nekas cits kā "Kļūdu savācēja objekta" izveide. Kas tiek izmantots visu kļūdu pievienošanai, lai ziņotu par problēmu beigās:
ErrorCollectorExample.java
pakete guru99.junit;importēt org.junit.Assert;importēt org.junit.Rule;importēt org.junit.Test;importēt org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Rulepublic ErrorCollector collector = jauns ErrorCollector ();@Pārbaudepublic void piemērs () {collector.addError (new Throwable ("Pirmajā rindā ir kļūda"));collector.addError (new Throwable ("Otrajā rindā ir kļūda"));System.out.println ("Labdien");izmēģināt {Assert.assertTrue ("A" == "B");} nozveja (izmetams t) {kolekcionārs.addError (t);}System.out.println ("Pasaule !!!!");}}
TestRunner.java
Pievienosim iepriekšējo testa klasi testa skrējējam un izpildīsim to, lai savāktu visas kļūdas. Skatīt zemāk esošo kodu:
pakete guru99.junit;importēt org.junit.runner.JUnitCore;importēt org.junit.runner.Result;importēt org.junit.runner.notification.Failure;publiskā klase TestRunner {public static void main (String [] args) {Rezultāta rezultāts = JUnitCore.runClasses (ErrorCollectorExample.class);par (Neveiksmes kļūme: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println ("Result ==" + result.wasSuccessful ());}}
Izeja:
Skatiet kļūdas izsekošanu, kas izseko visas kļūdas vienuviet:
JUnit ErrorCollector priekšrocības
JUnit apgalvojumu var izmantot funkcionālai vai GUI validācijai, piem
- assertEquals (virknes ziņojums, gaidāms objekts, faktiskais objekts), kas salīdzina to, ka divi objekti ir vienādi.
- Tāpat assertTrue (Būla nosacījums) apgalvo, ka nosacījums ir patiess.
Izmantojot apgalvojumu, validācijas pārbaude kļūst vienkārša. Bet viens no galvenajiem jautājumiem ir tas, ka testa izpilde tiks pārtraukta, pat ja viens apgalvojums neizdosies.
Lai pārbaudītu automatizācijas panākumus, izšķiroša nozīme ir testa nepārtrauktībai un atkopšanas apstrādei. Kļūdu savācējs ir labākais veids, kā rīkoties šāda veida scenārijos.
Kopsavilkums :
- Junit kļūdu savācējs ļauj testu turpināt arī pēc pirmā izdevuma atrašanas un testa beigās neizdodas
- Kļūdu savācējs apkopo visus kļūdu objektus un ziņo par tiem, galu galā, testa izpilde ir beigusies
- Visu kļūdu pievienošanas kļūdu savācējā priekšrocība ir tā, ka jūs varat pārbaudīt visas kļūdas vienlaikus
- Kļūdu savācējs vienkārši pievieno kļūdas, izmantojot metodi addError (thrable err), ko nodrošina ErrorCollector.java.