JUnit Testitapaukset @Before @BeforeClass Annotation
⚡ Älykäs yhteenveto
JUnit on laajimmin käytetty yksikkötestauskehys Java, ja sen testikiinnikkeiden merkinnät ohjaavat tarkalleen, mitä tapahtuu ennen ja jälkeen jokaisen testimetodin suorittamisen testiluokan sisällä.
JUnit on suosituin yksikkö Testaus puitteet sisään Java. Sitä suositellaan nimenomaisesti Yksikkötestaus. JUnit ei vaadi palvelinta verkkosovelluksen testaamiseen, mikä tekee testausprosessista nopeaa.
JUnit puite mahdollistaa myös nopean ja helpon testitapausten ja testitietojen luomisen. The org.junit paketti sisältää useita rajapintoja ja luokkia JUnit testaus, kuten Testi, Väite, Jälkeen ja Ennen. Laajempi JUnit Perhe rakentaa samojen rakennuspalikoiden varaan.
Mikä on testilaite?
Ennen kuin ymmärrämme, mikä testikiinnitys on, tutkitaan alla olevaa koodia.
Tämä koodi on suunniteltu suorittamaan kaksi testitapausta yksinkertaisessa tiedostossa.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
Tässä vähän ongelmia
- Koodia ei voi lukea.
- Koodia ei ole helppo ylläpitää.
- Kun testisarja on monimutkainen, koodi saattaa sisältää loogisia ongelmia.
Vertaa samaa koodia käyttämällä JUnit.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Koodi on paljon luettavampaa ja helpommin ylläpidettävää. Yllä oleva koodirakenne on testikiinnike.
Testilaite on konteksti, jossa a JUnit Testitapaus juoksee. Tyypillisesti testivarusteisiin kuuluvat:
- Objektit tai resurssit, jotka ovat käytettävissä mihin tahansa testitapaukseen.
- Vaadittavat toiminnot, jotka tekevät nämä esineet ja resurssit saataville.
- Nämä toiminnot ovat
- jako (setup)
- jakaminen (purkamisen).
Asennus ja purku
Otteluohjelmat ovat tärkeitä, koska JUnit käyttää näitä koukkuja jokaisen testin ympärillä.
- Yleensä on joitain toistuvia tehtäviä, jotka on tehtävä ennen jokaista testitapausta. Esimerkiksi: luo tietokantayhteys.
- Samoin jokaisen testitapauksen lopussa voi olla toistuvia tehtäviä. Esimerkiksi: puhdistaa, kun testi on suoritettu.
- JUnit tarjoaa merkintöjä, jotka auttavat asennuksessa ja purkamisessa. Se varmistaa, että resurssit vapautetaan ja testijärjestelmä on valmiina seuraavaa testitapausta varten.
Nämä JUnit merkintöjä käsitellään alla.
Perustaa
@Ennen huomautus sisään JUnit käytetään menetelmässä, joka sisältää Java koodi, joka suoritetaan ennen jokaista testitapausta, eli se suoritetaan ennen jokaista testin suoritusta.
Purkaminen (tuomiosta riippumatta)
@Jälkeen annotaatiota käytetään metodissa, joka sisältää Java koodi, joka suoritetaan jokaisen testitapauksen jälkeen. Nämä metodit suoritetaan, vaikka testitapauksessa heitettäisiin poikkeuksia tai jos väitteet epäonnistuvat.
Huomautus:
- Yllä lueteltuja huomautuksia saa olla mikä tahansa määrä.
- Kaikki menetelmät, joihin on merkitty @Ennen in JUnit suoritetaan ennen jokaista testitapausta, mutta ne voidaan suorittaa missä tahansa järjestyksessä.
- Voit periä @Before- ja @After-metodit superluokalta. Suoritus on seuraava, ja se on standardi suoritusprosessi superluokassa JUnit.
- Suorita JUnit @Ennen menetelmät superluokassa
- Suorita @Before-metodit tässä luokassa
- Suorita @Test-menetelmä tässä luokassa
- Suorita @After-menetelmät tässä luokassa
- Suorita @After-metodit superluokassa
JUnit Vuoden 5 huomautus: nämä merkinnät ovat JUnit 4 (org.junit). JUnit 5 nimesi ne uudelleen vuonna org.junit.jupiter.api, ja JUnit Alla oleva koodi 4 toimii edelleen vintage-moottorilla.
| JUnit 4 merkintää | JUnit 5 (Jupiter) vastine | Toimii |
|---|---|---|
| @Ennen | @BeforeEach | Ennen jokaista testausmenetelmää |
| @Jälkeen | @AfterEach | Jokaisen testimenetelmän jälkeen |
| @Ennen tuntia | @EnnenKaikkia | Kerran koko luokan edessä |
| @Oppitunnin jälkeen | @AfterAll | Kerran koko luokan jälkeen |
| @Jättää huomiotta | @Vammaiset | Ohittaa kommentoidun testin |
Esimerkki: Luokan luominen, jossa testiasetelmana on tiedosto
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Yllä olevassa esimerkissä toteutusketju on seuraava. Kaavio tracyksi luonti-testaus-poisto-sykli testimetodia kohden.
- createOutputFile()
- testitiedosto1()
- deleteOutputFile()
- createOutputFile()
- testitiedosto2()
- deleteOutputFile()
Oletus:
testFile1() suoritetaan ennen testFile2()-funktiota, mikä ei ole taattua.
Kertakäyttöinen asennus
- Menetelmä on mahdollista suorittaa vain kerran koko testiluokassa ennen kuin jokin testeistä suoritetaan, ja ennen @Ennen menetelmä(t).
- "Kerta-asennus" on hyödyllinen palvelimien käynnistämisessä, tietoliikenteen avaamisessa ja vastaavissa töissä. Resurssien sulkeminen ja uudelleen avaaminen kutakin testiä varten on aikaa vievää.
- Tämä voidaan tehdä huomautuksen avulla @Ennen tuntia in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
Menetelmän on oltava julkinen staattinen tyhjyys, Koska JUnit kutsuu sitä ennen kuin yhtäkään testi-instanssia on olemassa.
Vain kerran purkaa
- Samalla tavalla kuin kertakäyttöinen asennus, käytettävissä on myös kertakäyttöinen puhdistusmenetelmä. Se suoritetaan kaikkien testitapausmetodien jälkeen ja @Jälkeen huomautukset on suoritettu.
- Se on hyödyllinen pysähdykseenping palvelimia ja sulkemalla tietoliikenneyhteyksiä.
- Tämä voidaan tehdä käyttämällä @Oppitunnin jälkeen merkintä.
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit Testaa Suites
Kun kalustot on asennettu, toisiinsa liittyvät testiluokat ryhmitellään ja käynnistetään yleensä yhdessä.
Jos haluamme suorittaa useita testejä tietyssä järjestyksessä, se voidaan tehdä yhdistämällä kaikki testit yhteen paikkaan. Tätä paikkaa kutsutaan testipaketiksi. Lisätietoja testipakettien suorittamisesta ja niiden käytöstä on kohdassa JUnit kuuluvat tämän piiriin oppitunti.
JUnit Testijuoksija
JUnit tarjoaa työkalun testitapausten suorittamiseen.
- JUnitYdin luokkaa käytetään näiden testien suorittamiseen.
- Menetelmä nimeltä runClasses antamat org.junit.runner.JUnitYdin käytetään yhden tai useamman testiluokan suorittamiseen.
- Tämän menetelmän palautustyyppi on Tulos esine (org.junit.runner.Result), jota käytetään testien tietojen käyttämiseen. Katso seuraava koodiesimerkki selvemmän käsityksen saamiseksi.
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Yllä olevassa koodissa ”tulos”-objektia käsitellään suorittamiemme testitapausten epäonnistumisten ja onnistuneiden tulosten hakemiseksi. Apufunktiot, kuten väittääEquals nostaa esiin nuo epäonnistumiset samalla @Jättää huomiotta jättää kokeen väliin.
JUnit Vuoden 5 huomautus: JUnitYdin on JUnit 4 juoksijaa. JUnit 5 korvaa sen JUnit foorumi Launcher API, jonka IDE yleensä käynnistää, Gradle tai Maven Surefire.
Etunimi JUnit Ohjelma
Kohtuullinen SDLC:n tuntemus, Java ohjelmoinnin perusteet ja ohjelmistojen testaus prosessi auttaa ymmärtämään JUnit ohjelma, samoin kuin sen tietäminen, miten yksikkötestejä eroavat integraatiotesteistä.
Ymmärretään yksikkötestaus käytännön esimerkin avulla. Meidän on luotava testiluokka, jonka testimetodi on annotoitu seuraavasti: @Testata kuten alla on annettu:
MyFirstClassTest.java
package guru99.JUnit; import static org.junit.Assert.*; import org.junit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
Suorittaaksemme yllä olevan testimetodin, meidän on luotava testisuoritin. Testisuorittimeen meidän on lisättävä testiluokka parametrina JUnitCoren runClasses()-metodi. Se palauttaa testituloksen sen perusteella, läpäistiinkö vai hylättiinkö testi.
Lisätietoja tästä on alla olevassa koodissa:
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(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
ulostulo
Kerran TestRunner.java Suoritamme testimetodimme, ja saamme tulokseksi joko epäonnistuneen tai hyväksytyn. Alla on tulosteen selitys:
- Tässä esimerkissä suorituksen jälkeen MyFirstClassTest.java, testi on läpäisty ja tulos on vihreä.
- Jos se olisi epäonnistunut, se olisi näyttänyt tuloksen punaisena, ja epäonnistuminen voidaan havaita epäonnistumiskohdasta. trace. Katso JUnit Käyttöliittymä alla:


