Mikä on JUnit-merkinnät?
JUNIT ANNOTATIONS on erityinen syntaktisten metatietojen muoto, joka voidaan lisätä Java-lähdekoodiin koodin paremman luettavuuden ja rakenteen parantamiseksi. Muuttujat, parametrit, paketit, menetelmät ja luokat voidaan merkitä. Merkinnät otettiin käyttöön Junit4: ssä, mikä tekee Java-koodista luettavamman ja yksinkertaisemman. Tämä on suuri ero Junit3: n ja Junit4: n välillä, jonka Junit4 perustuu merkintöihin.
Junit5: n merkintöjen avulla voidaan helposti oppia ja toteuttaa JUnit-testi. Alla on luettelo tärkeistä ja usein käytetyistä merkinnöistä:
S.No. | Merkinnät | Kuvaus |
---|---|---|
1. | @Testata | Tämä merkintä korvaa org.junit.TestCase-ohjelman, joka osoittaa, että public void -menetelmä, johon se on liitetty, voidaan suorittaa testitapauksena. |
2. | @Ennen | Tätä merkintää käytetään, jos haluat suorittaa jonkin lauseen, kuten ennakkoedellytykset, ennen jokaista testitapausta. |
3. | @Ennen tuntia | Tätä merkintää käytetään, jos haluat suorittaa joitain lauseita ennen kuin kaikki testitapaukset esim. Testiliitännälle on suoritettava ennen kaikkia testitapauksia. |
4. | @Jälkeen | Tätä merkintää voidaan käyttää, jos haluat suorittaa joitain lauseita jokaisen testitapauksen jälkeen esim. Muuttujien nollaamiseksi, väliaikaisten tiedostojen, muuttujien poistamiseksi jne. |
5. | @Oppitunnin jälkeen | Tätä merkintää voidaan käyttää, jos haluat suorittaa joitain lauseita kaikkien testitapausten jälkeen, esimerkiksi resurssien vapauttamista kaikkien testitapausten suorittamisen jälkeen. |
6. | @Innores | Tätä merkintää voidaan käyttää, jos haluat jättää huomiotta jotkut lauseet testin suorituksen aikana esimerkiksi poistaaksesi joitain testitapauksia testin suorituksen aikana. |
7. | @Test (aikakatkaisu = 500) | Tätä merkintää voidaan käyttää, jos haluat asettaa jonkin aikakatkaisun testin suorittamisen aikana esim. Jos työskentelet jonkin palvelutasosopimuksen (Service Level Agreement) mukaisesti, ja testit on suoritettava tietyn ajan kuluessa. |
8. | @Test (odotettavissa = IllegalArgumentException.class) | Tätä merkintää voidaan käyttää, jos haluat käsitellä joitain poikkeuksia testin suorittamisen aikana. Esimerkiksi, jos haluat tarkistaa, heittääkö tietty menetelmä tiettyä poikkeusta vai ei. |
Tässä opetusohjelmassa opit-
- Esimerkki JUnit-merkinnöistä
- JUnit Assert -luokka
- JUnit-testikoteloiden luokka
- JUnit TestResult -luokka
- JUnit Test Suite -luokka
Esimerkki JUnit-merkinnöistä
Luodaan luokka, joka kattaa tärkeät JUnit-merkinnät yksinkertaisilla tulostuslausekkeilla, ja suoritetaan se testijuoksija-luokassa:
Vaihe 1) Harkitse alla olevaa java-luokkaa, jolla on useita menetelmiä, jotka on liitetty yllä lueteltuihin huomautuksiin:
JunitAnnotationsExample.java
paketti guru99.junit;tuo staattinen org.junit.Assert.assertEquals;tuo staattinen org.junit.Assert.assertFalse;tuo java.util.ArrayList;tuo org.junit.After;tuo org.junit.AfterClass;tuo org.junit.Before;tuo org.junit.BeforeClass;tuo org.junit.Ignore;tuoda org.junit.Test;julkisen luokan JunitAnnotationsExample {yksityinen ArrayList-luettelo;@Ennen tuntiapublic static void m1 () {System.out.println ("Käyttämällä @BeforeClassia, suoritettu ennen kaikkia testitapauksia");}@Ennenpublic void m2 () {list = new ArrayList ();System.out.println ("Käyttämällä @Before-merkintöjä, suoritettu ennen kutakin testitapausta");}@Oppitunnin jälkeenpublic staattinen void m3 () {System.out.println ("Käyttämällä @AfterClassia, suoritetaan kaikkien testitapausten jälkeen");}@Jälkeenpublic void m4 () {list.clear ();System.out.println ("Käyttämällä @After, suoritetaan jokaisen testitapauksen jälkeen");}@Testatapublic void m5 () {list.add ("testi");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}@Jättää huomiottapublic void m6 () {System.out.println ("Käyttämällä @Ignore -ohjelmaa tämä suoritus ohitetaan");}@Test (aikakatkaisu = 10)public void m7 () {System.out.println ("Käyttämällä @Test (aikakatkaisu) -toimintoa voidaan käyttää aikakatkaisun toteuttamiseen JUnit4-testitapauksessa");}@Test (odotettavissa = NoSuchMethodException.class)public void m8 () {System.out.println ("Käyttäen @Test (odotettavissa), se tarkistaa määritetyn poikkeuksen suorituksen aikana");}}
Vaihe 2) Luodaan testijuoksijaluokka yllä olevan testin suorittamiseksi:
TestRunner.java
paketti guru99.junit;tuo org.junit.runner.JUnitCore;tuo org.junit.runner.Result;tuo org.junit.runner.notification.Failure;julkinen luokka TestRunner {public staattinen void main (String [] argumentoi) {Tulos = JUnitCore.runClasses (JunitAnnotationsExample.class);for (epäonnistumisvirhe: tulos.getFailures ()) {System.out.println (vika.String ());}System.out.println ("Tulos ==" + tulos.Onnistui ());}}
odotettu tulos
- Kaikki testitapaukset suoritetaan yksi kerrallaan, ja kaikki tulosteet voidaan nähdä konsolissa.
- Kuten yllä olevassa taulukossa @Ennen keskusteltiin, @BeforeClass [menetelmä m1 () ja m2 ()] suoritetaan ennen kutakin ja ennen kaikkia testitapauksia.
- Samalla tavalla @ jälkeen, @ jälkiluokka (menetelmä m3 () ja m4 ()) suoritetaan jokaisen testitapauksen jälkeen. @ignore (menetelmä m6 ()) katsotaan testin ohittamatta.
Analysoidaan tarkemmin yllä olevassa Java-luokassa käytetyt testitapaukset:
- Harkitse menetelmää m5 () seuraavalla tavalla:
@Testatapublic void m5 () {list.add ("testi");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}
Edellä olevassa menetelmässä lisätään merkkijono muuttujaan "list" niin
- list.isEmpty () palauttaa arvon false.
- assertFalse (list.isEmpty ()) on palautettava true.
- Tämän seurauksena testitapaus läpäisee .
Koska olet lisännyt luetteloon vain yhden merkkijonon, koko on yksi.
- list.size (): n on palautettava int-arvo muodossa "1".
- Joten assertEquals (1, list.size ()) on palautettava true.
- Tämän seurauksena testitapaus läpäisee .
- Harkitse menetelmää m7 () seuraavalla tavalla:
@Test (aikakatkaisu = 10)public void m7 () {System.out.println ("Käyttämällä @Test (aikakatkaisu) -toimintoa voidaan käyttää aikakatkaisun toteuttamiseen JUnit4-testitapauksessa");}
Kuten yllä todettiin, @ test (aikakatkaisu = 10) -merkintää käytetään aikakatkaisun toteuttamiseen testitapauksessa.
- Harkitse menetelmää m8 () seuraavalla tavalla:
@Test (odotettavissa = NoSuchMethodException.class)public void m8 () {System.out.println ("Käyttäen @Test (odotettavissa), se tarkistaa määritetyn poikkeuksen suorituksen aikana");}
Kuten yllä todettiin, @Test (odotettavissa) tarkistaa määritetyn poikkeuksen suorituksen aikana, joten menetelmä m8 () heittää "Ei tällaista menetelmäpoikkeusta". Tämän seurauksena testi suoritetaan poikkeusta lukuun ottamatta.
Kun kaikki testitapaukset on läpäisty, tämä johtaa onnistuneeseen testin suorittamiseen.
Todellinen tulos
Koska yllä olevassa esimerkissä on kolme testitapausta, kaikki testitapaukset suoritetaan yksi kerrallaan. Katso lähtö alla :
Katso alla olevat konsolissa näkyvät tulosteet:
Käyttämällä @BeforeClass, suoritettu ennen kaikkia testitapauksia
Käyttämällä @Before-merkintöjä, joka suoritetaan ennen jokaista testitapausta
Käyttämällä @After, suoritetaan jokaisen testitapauksen jälkeen
Käyttämällä @Before-merkintöjä, joka suoritetaan ennen jokaista testitapausta
@Test (timeout) -toiminnon avulla sitä voidaan käyttää aikakatkaisun toteuttamiseen JUnit4-testitapauksessa
Käyttämällä @After, suoritetaan jokaisen testitapauksen jälkeen
Käyttämällä @Before-merkintöjä, joka suoritetaan ennen jokaista testitapausta
Käyttämällä @Test (odotettavissa), se tarkistaa määritetyn poikkeuksen suorituksen aikana
Käyttämällä @After, suoritetaan jokaisen testitapauksen jälkeen
Käyttämällä @AfterClass, suoritetaan kaikkien testitapausten jälkeen
JUnit Assert -luokka
Tämä luokka tarjoaa joukon vakuutusmenetelmiä, jotka ovat hyödyllisiä testitapauksen kirjoittamisessa. Jos kaikki väittämät hyväksytään, testitulokset ovat onnistuneet. Jos jokin väite epäonnistuu, testitulokset epäonnistuvat.
Kuten aiemmin havaitsit, alla olevassa taulukossa kuvataan tärkeät vakuutusmenetelmät ja kuvaus:
S.No. | Menetelmä | Kuvaus |
---|---|---|
1. | void assertEquals (odotettavissa oleva looginen arvo, looginen todellinen) | Se tarkistaa, ovatko kaksi arvoa yhtä suurta kuin Object-luokan yhtä suuri menetelmä |
2. | void assertFalse (totuusarvo) | toiminnallisuus on tarkistaa, että ehto on väärä. |
3. | void assertNotNull (objektiobjekti) | "assertNotNull" -toiminnon tarkoituksena on tarkistaa, ettei objekti ole nolla. |
4. | void assertNull (objektiobjekti) | "assertNull" -toiminnolla tarkistetaan, että objekti on tyhjä. |
5. | void assertTrue (totuusarvo) | "assertTrue" -toiminnon tarkoituksena on tarkistaa, että ehto on totta. |
6. | void fail () | Jos haluat heittää väitevirheen, sinulla on Fail (), joka johtaa aina epäonnistuneeseen tuomioon. |
7. | void assertSame ([merkkijono-viesti] | "assertSame" -toiminnolla tarkistetaan, että nämä kaksi objektia viittaavat samaan objektiin. |
8. | void assertNotSame ([merkkijono-viesti] | "assertNotSame" -toiminnolla pyritään tarkistamaan, että nämä kaksi objektia eivät viittaa samaan objektiin. |
JUnit-testikoteloiden luokka
Useiden testien suorittamiseksi TestCase-luokka on saatavilla org.junit.TestCase- paketeissa. Huomautus @Test kertoo JUnitille, että tämä julkinen mitätöintimenetelmä (Test Case tässä), johon se on liitetty, voidaan käyttää testitapauksena.
Alla olevassa taulukossa on joitain tärkeitä menetelmiä, jotka ovat käytettävissä org.junit.TestCase- luokassa:
S.No. | Menetelmä | Kuvaus |
---|---|---|
1. | int countTestCases () | Tätä menetelmää käytetään laskemaan, kuinka monta suoritustestillä suoritettua testitapausta (TestResult tr) . |
2. | TestResult createResult () | Tätä menetelmää käytetään luomaan TestResult- objekti. |
3. | Merkkijono getName () | Tämä menetelmä palauttaa merkkijonon, joka ei ole muuta kuin TestCase . |
4. | Testitulosajo () | Tätä menetelmää käytetään suorittamaan testi, joka palauttaa TestResult- objektin |
5. | void run (TestResult-tulos) | Tätä menetelmää käytetään testin suorittamiseen TestResult- objektilla, joka ei palauta mitään. |
6. | void setName (merkkijono) | Tätä menetelmää käytetään asettamaan TestCase- nimi . |
7. | void setUp () | Tätä menetelmää käytetään resurssien assosiaatiokoodin kirjoittamiseen. esim. luoda tietokantayhteys. |
8. | void tearDown () | Tätä menetelmää käytetään resurssien julkaisukoodin kirjoittamiseen. esim. vapauta tietokantayhteys tapahtuman jälkeen. |
JUnit TestResult -luokka
Kun suoritat testin, se palauttaa tuloksen ( TestResult- objektin muodossa ). Tätä TestResult-objektia voidaan käyttää tuloksena olevan objektin analysointiin. Tämä testitulos voi olla joko epäonnistunut tai onnistunut. Katso alla olevasta taulukosta tärkeät menetelmät, joita käytetään org.junit.TestResult-luokassa:S.No. | Menetelmä | Kuvaus |
---|---|---|
1. | void addError (testitesti, heitettävä t) | Tätä menetelmää käytetään, jos haluat lisätä virheen testiin. |
2. | void addFailure (testitesti, AssertionFailedError t) | Tätä menetelmää käytetään, jos haluat lisätä vian vikaluetteloon. |
3. | void endTest (testitesti) | Tätä menetelmää käytetään ilmoittamaan testin suorittamisesta (valmis) |
4. | int errorCount () | Tätä menetelmää käytetään testin suorittamisen aikana havaitun virheen saamiseen. |
5. | Luku | Tämä menetelmä palauttaa yksinkertaisesti kokoelman virheitä. |
6. | int FailCount () | Tätä menetelmää käytetään testin suorituksen aikana havaittujen virheiden määrän saamiseen. |
7. | mitätöinti (TestCase-testi) | Tätä menetelmää käytetään testitapauksen suorittamiseen. |
8. | int runCount () | Tämä menetelmä yksinkertaisesti laskee suoritetun testin. |
9. | void startTest (testitesti) | Tätä menetelmää käytetään ilmoittamaan testin aloittamisesta. |
10. | mitätön pysäytys () | Tätä menetelmää käytetään pysäytettävän testiajon testaamiseen. |
JUnit Test Suite -luokka
Jos haluat suorittaa useita testejä määrätyssä järjestyksessä, se voidaan tehdä yhdistämällä kaikki testit yhteen paikkaan. Tätä paikkaa kutsutaan testisviiteiksi.
Katso alla olevasta taulukosta tärkeät menetelmät, joita käytetään org.junit.TestSuite- luokassa:
S.No. | Menetelmä | Kuvaus |
---|---|---|
1. | void addTest (testitesti) | Tätä menetelmää käytetään, jos haluat lisätä testin sarjaan. |
2. | void addTestSuite (Luokka laajentaa TestCase> testClass) | Tätä menetelmää käytetään, jos haluat määrittää luokan lisäämällä testin sarjaan. |
3. | int countTestCases () | Tätä menetelmää käytetään, jos haluat laskea testitapausten määrän. |
4. | Merkkijono getName () | Tätä menetelmää käytetään testipaketin nimen saamiseen. |
5. | void run (TestResult-tulos) | Tätä menetelmää käytetään testin suorittamiseen ja testitulosten keräämiseen TestResult- objektissa. |
6. | void setName (merkkijono) | Tätä menetelmää käytetään asettamaan TestSuite- nimi . |
7. | Test testAt (int-indeksi) | Tätä menetelmää käytetään, jos haluat palauttaa testin annetulla indeksillä. |
8. | int testCount () | Tätä menetelmää käytetään, jos haluat palauttaa useita testejä Suiteen. |
9. | staattinen testivaroitus (merkkijono) | Tämä menetelmä palauttaa testin, joka epäonnistuu ja kirjaa varoitusviestin. |
Yhteenveto:
- JUnit tarjoaa kannettavan API: n, joka tarjoaa kaikki tärkeät luokat ja merkinnät, jotka ovat hyödyllisiä yksikötestin kirjoittamisessa.
- Luokat, jotka ovat erittäin hyödyllisiä kirjoitettaessa testitapausta
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- luettelo tärkeistä ja usein käytetyistä merkinnöistä
@Ennen
@Ennen tuntia
@Jälkeen
@Oppitunnin jälkeen
@Testata
@Jättää huomiotta