JUnit ErrorCollector @Rule esimerkin kanssa
Normaalissa tilanteessa aina kun havaitset virheen testin suorittamisen aikana, lopetat testin, korjaat virheen ja suoritat testin uudelleen.
Mutta JUnit on hieman erilainen lähestymistapa. Kanssa JUnit virheenkeräin, voit silti jatkaa testin suorittamista, vaikka ongelma havaitaan tai testi epäonnistuu. Virhekeräilijä kerää kaikki virheobjektit ja raportoi niistä vain kerran testin suorittamisen jälkeen.
Miksi käyttää Error Collectoria?
Kun kirjoitat testiskriptiä, haluat suorittaa kaikki testit, vaikka jokin koodirivi epäonnistuisi verkkovian, vahvistusvirheen tai muun syyn vuoksi. Tässä tilanteessa voit silti jatkaa testikomentosarjan suorittamista käyttämällä tarjoamaa erikoistoimintoa JUnit tunnetaan "virheiden kerääjänä".
Tätä varten, JUnit käyttötarkoituksiin @Säännön huomautus jota käytetään virheenkeräimen objektin luomiseen. Kun virhekeräimen objekti on luotu, voit helposti lisätä kaikki virheet objektiin menetelmällä addError (heitettävä virhe). Kuten tiedät, se Heitettävä on superluokka Poikkeus ja Virhe luokka sisään Java. Kun lisäät virheitä tällä tavalla, nämä virheet kirjataan sisään JUnit testitulos .
Kaikkien virheiden lisääminen Error Collectoriin on se etu, että voit tarkistaa kaikki virheet kerralla. Lisäksi, jos komentosarja epäonnistuu kesken, se voi silti jatkaa sen suorittamista
Huomautuksia: Jos käytät yksinkertaista vahvistusta tai try/catch block , virhekeräysmenetelmän käyttö ei ole mahdollista.
Esimerkkikoodi
Saadaksesi lisätietoja Error Collectorista, katso alla koodiesimerkki, joka osoittaa, kuinka luodaan Error Collector -objekti ja lisätään kaikki virheet kyseiseen objektiin ongelman seuraamiseksi:
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. } }
Mikä on @Rule jUnitissa?
JUnit tarjoaa erityistä testien käsittelyä, Testitapaus tai testipakettia käyttämällä @säännön huomautus. @rule:n avulla voit helposti lisätä tai määrittää testin käyttäytymisen uudelleen.
Tarjolla on useita sisäänrakennettuja sääntöjä JUnit API, jota testaaja voi käyttää, tai jopa sinä voit kirjoittaa oman sääntömme.
Katso alla koodirivi, joka näyttää, kuinka @rule-merkintää käytetään yhdessä Error Collectorin kanssa:
@Rule public ErrorCollector collector= new ErrorCollector();
Esimerkki ErrorCollectorista
Ymmärtääksemme virheenkerääjän, luodaan luokka ja sääntö kaikkien virheiden keräämiseksi. Lisäät kaikki virheet käyttämällä addError(throwable) -toimintoa tähän.
Katso alla koodi, joka yksinkertaisesti luo säännön, joka ei ole muuta kuin "Error Collector -objektin" luominen. Sitä käytetään edelleen lisäämään kaikki virheet ongelman ilmoittamiseksi lopussa:
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
Lisätään yllä oleva testiluokka testirunneriin ja suoritetaan se keräämään kaikki virheet. Katso alla oleva koodi:
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()); } }
lähtö:
Katso vikajäljitys, joka jäljittää kaikki virheet yhdestä paikasta:
Edut JUnit ErrorCollector
Voit käyttää JUnit väite toiminnallista tai graafista käyttöliittymää varten, esim
- assertEquals(merkkijonoviesti, odotettu objekti, todellinen objekti), jotka vertaavat, että kaksi objektia ovat yhtä suuret.
- Vastaavasti assertTrue(Boolen ehto) vakuuttaa, että ehto on tosi.
Väitettä käyttämällä validointitestistä tulee helppoa. Mutta yksi suuri ongelma on, että testin suorittaminen pysähtyy, vaikka yksittäinen väite epäonnistuisi.
Testauksen jatkuvuus ja palautuksen käsittely ovat ratkaisevan tärkeitä testiautomaation onnistumisen kannalta. Error Collector on paras tapa käsitellä tällaisia skenaarioita.
Yhteenveto
- Junitin virheenkeräin mahdollistaa testin jatkamisen, vaikka ensimmäinen ongelma löydetään ja testi epäonnistuu lopussa
- Virhekeräilijä kerää kaikki virheobjektit ja raportoi siitä vasta, loppujen lopuksi testin suoritus on ohi
- Kaikkien virheiden lisääminen Error Collectoriin on se etu, että voit tarkistaa kaikki virheet kerralla
- Virheenkeräilijä yksinkertaisesti lisää virheet ErrorCollector.javan tarjoamalla menetelmällä addError(throwable err).