JUnit ErrorCollector @Rule esimerkin kanssa
⚡ Älykäs yhteenveto
JUnit ErrorCollector on sääntö, joka sallii testin jatkua epäonnistumisen jälkeen, keräämällä kaikki virheobjektit ja raportoimalla ne yhdessä testimetodin päättymisen jälkeen sen pysäyttämisen sijaan.ping ensimmäisen ongelman kohdalla.
Normaalissa tilanteessa aina kun havaitset virheen testin suorittamisen aikana, lopetat testin, korjaat virheen ja suoritat testin uudelleen.
Mutta JUnit on hieman erilainen lähestymistapa. JUnit virheiden kerääjän avulla voit jatkaa testin suorittamista, vaikka ongelma löydettäisiin tai testi epäonnistuisi. Virheiden kerääjä kerää kaikki virheobjektit ja raportoi ne vain kerran testin suorituksen päätyttyä.
Miksi käyttää Error Collectoria?
Testiskriptiä kirjoitettaessa on tärkeää suorittaa kaikki testit, vaikka jokin koodirivi epäonnistuisi verkkoyhteyden katkeamisen, vahvistusvirheen tai muun syyn vuoksi. Tällaisessa tilanteessa voit silti jatkaa testiskriptin suorittamista käyttämällä palvelun tarjoamaa erityisominaisuutta. JUnit tunnetaan "virheiden kerääjänä".
Tätä varten, JUnit käyttää @Säännön huomautus, jota käytetään virheidenkerääjän objektin luomiseen. Kun virheidenkerääjän objekti on luotu, voit helposti lisätä kaikki virheet objektiin käyttämällä metodia addError (heitettävä virhe)Kuten tiedät, Heitettävä on superluokka Poikkeus ja Virhe luokat JavaKun lisäät virheitä tällä tavalla, ne kirjataan lokiin. JUnit testitulos.
Kaikkien virheiden lisäämisen etuna virheiden kerääjään on, että voit tarkistaa kaikki virheet kerralla. Lisäksi, jos skripti epäonnistuu kesken suorituksen, suoritus jatkuu silti testimetodin loppuun asti.
HuomautuksiaYksinkertaista assert- tai try/catch-lohkoa käytettäessä virheenkerääjämetodin käyttö ei ole mahdollista.
Esimerkkikoodi
Saadaksesi lisätietoja virheidenkerääjästä, katso alla oleva koodiesimerkki, joka havainnollistaa, kuinka luodaan virheidenkerääjäobjekti ja lisätään kaikki virheet kyseiseen objektiin. track ongelma:
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. } }
Huomautus: tämä on havainnollistava esimerkkitract, ei käännettävä tiedosto. Sen lopussa oleva kommentti rivittyy toiselle riville ilman aloittavaa //-merkkiä, eikä getResults()-funktiota tai Hamcrest-tuloksia näytetä. Täydellinen suoritettava versio seuraa alla. Esimerkki ErrorCollectorista.
Mikä on @Rule-funktio? JUnit?
JUnit tarjoaa erityisen testien käsittelytavan, Testitapaus tai testipaketin avulla @Säännön huomautus@Rule-komennon avulla voit helposti lisätä tai määrittää uudelleen testin toiminnan.
Sisäänrakennettuja sääntöjä on useita, ja JUnit API, jota testaaja voi käyttää, ja voit myös kirjoittaa oman säännön. Sääntökentän on oltava julkinen, ei-staattinen ja tyyppiä, joka toteuttaa TestRulen.
Katso alla oleva koodirivi, joka näyttää, miten @Rule-annotaatiota käytetään yhdessä virheiden kerääjän kanssa:
@Rule public ErrorCollector collector= new ErrorCollector();
JUnit Vuoden 5 huomautus: Jupiter korvasi säännöt Extension API:lla, joten @Rule- ja ErrorCollector-muuttujat puuttuvat tiedostosta org.junit.jupiter. Lähimmät vastineet ovat Assertions.assertAll() ja AssertJ SoftAssertions. JUnit Tässä esitetty 4-koodi toimii edelleen vanhan moottorin läpi. Katso JUnit merkinnät koko kartan opastusvideoping.
Esimerkki ErrorCollectorista
Ymmärtääksemme virheiden kerääjän toimintaa, luodaan luokka ja sääntö kaikkien virheiden keräämiseksi. Lisäät kaikki virheet käyttämällä addError(throwable)-funktiota.
Katso alla olevaa koodia, joka yksinkertaisesti luo säännön, joka on vain "virheidenkerääjäobjekti". Sitä käytetään edelleen kaikkien virheiden lisäämiseen ongelman raportoimiseksi 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 testisuorittimeen ja suoritetaan se kaikkien virheiden keräämiseksi. 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 epäonnistuminen trace, joka trackaikki virheet yhdessä paikassa. JUnit näkymä laskee yhden suorituksen, mutta raportoi kaksi virhettä ja yhden epäonnistumisen, joilla kullakin on oma rivinumeronsa:
Edut JUnit ErrorCollector
Voit käyttää a JUnit väite toiminnallista tai graafisen käyttöliittymän validointia varten, esimerkiksi:
- assertEquals(String message, Object expected, Object actual), joka vertaa kahden olion välisiä yhtäläisyyksiä.
- Vastaavasti assertTrue(Boolen ehto) vakuuttaa, että ehto on tosi.
Väittämien avulla validointitestaus on helppoa. Yksi merkittävä ongelma on kuitenkin se, että testin suoritus pysähtyy, vaikka yksikin väite epäonnistuisi.
Testien jatkuvuus ja palautumisen hallinta on ratkaisevan tärkeää testiautomaation onnistumiselle, ja sillä on suurin merkitys pitkällä aikavälillä. Selenium työnkulkuja, joissa selaimen uudelleenkäynnistäminen jokaisen epäonnistuneen tarkistuksen jälkeen on kallista. Virheiden kerääjä on paras tapa käsitellä tällaisia tilanteita.

