JUnit Merkintöjen opetusohjelma, jossa on esimerkki: Mitä ovat @Test ja @After

Mikä on JUnit Huomautuksia?

JUnit Merkinnät on syntaktisen metadatan erityinen muoto, johon voidaan lisätä Java lähdekoodi parantaa koodin luettavuutta ja rakennetta. Muuttujat, parametrit, paketit, menetelmät ja luokat voidaan merkitä. Huomautukset otettiin käyttöön Junit4:ssä, joka tekee Java koodi luettavampi ja yksinkertaisempi. Tämä on suuri ero Junit3:n ja Junit4:n välillä, että Junit4 perustuu huomautuksiin.

Junit5:n merkintöjen tuntemalla voidaan helposti oppia ja toteuttaa a JUnit testata. Alla on tärkeä ja usein käytetty JUnit huomautuslista:

S.No. Merkinnät Tuotetiedot
1. @Testata Tämä huomautus korvaa org.junit.TestCase-tiedoston, joka osoittaa, että public void -menetelmä, johon se on liitetty, voidaan suorittaa testitapauksena.
2. @Ennen Tätä huomautusta käytetään, jos haluat suorittaa jonkin käskyn, kuten ennakkoehdot, ennen jokaista testitapausta.
3. @Ennen tuntia Tätä huomautusta käytetään, jos haluat suorittaa joitain lauseita ennen kuin kaikki testitapaukset, esim. testiyhteys, on suoritettava ennen kaikkia testitapauksia.
4. @Jälkeen Tätä merkintää voidaan käyttää, jos haluat suorittaa joitain lauseita jokaisen jälkeen Testitapaus esim. muuttujien nollaamiseen, väliaikaisten tiedostojen, muuttujien poistamiseen jne.
5. @Oppitunnin jälkeen Tätä merkintää voidaan käyttää, jos haluat suorittaa joitain lauseita kaikkien testitapausten jälkeen, esim. Resurssien vapauttaminen kaikkien testitapausten suorittamisen jälkeen.
6. @Ohittaa Tätä merkintää voidaan käyttää, jos haluat jättää huomioimatta joitain lauseita testin suorittamisen aikana esim. poistaa joitakin testitapauksia testin suorittamisen aikana.
7. @Testi(aikakatkaisu=500) Tätä merkintää voidaan käyttää, jos haluat asettaa aikakatkaisun testin suorittamisen aikana esim. jos työskentelet jonkin SLA:n (Service Level Agreement) alaisuudessa, ja testit on suoritettava tietyssä ajassa.
8. @Test(expected=IllegalArgumentException.class) Tätä merkintää voidaan käyttää, jos haluat käsitellä poikkeuksia testin suorittamisen aikana. Esimerkiksi, jos haluat tarkistaa, heittääkö tietty menetelmä tietyn poikkeuksen vai ei.

JUnit Esimerkki huomautuksista

Luodaan luokka, joka kattaa tärkeitä JUnit huomautukset yksinkertaisilla tulostuslauseilla ja suorita se testirunner-luokassa:

Vaihe 1) Harkitse alla olevaa java-luokkaa, jossa on useita menetelmiä, jotka on liitetty yllä lueteltuihin huomautuksiin:

JunitAnnotationsExample.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				
import static org.junit.Assert.assertFalse;				

import java.util.ArrayList;		

import org.junit.After;		
import org.junit.AfterClass;		
import org.junit.Before;		
import org.junit.BeforeClass;		
import org.junit.Ignore;		
import org.junit.Test;		

public class JunitAnnotationsExample {				

    private ArrayList<String> list;					

    @BeforeClass		
    public static void m1() {							
        System.out.println("Using @BeforeClass , executed before all test cases ");					
    }		

    @Before		
    public void m2() {					
        list = new ArrayList<String>();					
        System.out.println("Using @Before annotations ,executed before each test cases ");					
    }		

    @AfterClass		
    public static void m3() {							
        System.out.println("Using @AfterClass ,executed after all test cases");					
    }		

    @After		
    public void m4() {					
        list.clear();			
        System.out.println("Using @After ,executed after each test cases");					
    }		

    @Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

    @Ignore		
    public void m6() {					
        System.out.println("Using @Ignore , this execution is ignored");					
    }		

    @Test(timeout = 10)			
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

    @Test(expected = NoSuchMethodException.class)					
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					

    }		

}		

Vaihe 2) Luodaan testirunner-luokka yllä olevan testin suorittamista varten:

TestRunner.java

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(JunitAnnotationsExample.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

odotettu tulos

  • Kaikki testitapaukset suoritetaan yksitellen, ja kaikki print-lauseet näkyvät konsolissa.
  • Kuten yllä olevassa taulukossa @Ennen huomautusta sisään JUnit, @BeforeClass [ menetelmä m1() ja m2() ] suoritetaan ennen jokaista testitapausta ja ennen kaikkia testitapauksia.
  • Samalla tavalla @After in JUnit, @afterClass (menetelmä m3() ja m4()) suoritetaan kunkin testitapauksen jälkeen ja vastaavasti kaikkien testitapausten jälkeen. @ignore (menetelmä m6()) käsitellään testin huomioimatta jättämisenä.

Analysoidaan yksityiskohtaisesti yllä olevassa java-luokassa käytettyjä testitapauksia:

  1. Harkitse menetelmää m5() alla esitetyllä tavalla:
	@Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

Yllä olevassa menetelmässä kun lisäät merkkijonon muuttujaan "list" niin

  • list.isEmpty() palauttaa false.
  • assertFalse(list.isEmpty()) täytyy palata tosi.
  • Tämän seurauksena testitapaus tulee kulkea.

Koska olet lisännyt luetteloon vain yhden merkkijonon, koko on yksi.

  • lista.koko() on palautettava int-arvo muodossa "1" .
  • So assertEquals(1, list.size()) täytyy palata tosi.
  • Tämän seurauksena testitapaus tulee kulkea.
  1. Harkitse menetelmää m7() alla esitetyllä tavalla:
@Test(timeout = 10)		
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

Kuten edellä käsiteltiin @Test(aikakatkaisu = 10)huomautusta käytetään pakottamaan aikakatkaisu testitapauksessa.

  1. Harkitse menetelmää m8() alla esitetyllä tavalla:
@Test(expected = NoSuchMethodException.class)				
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					
    
    }		

Kuten edellä käsiteltiin @Testi(odotettu) tarkistaa tietyn poikkeuksen sen suorituksen aikana, joten menetelmä m8() heittää "Ei tällaista menetelmäpoikkeusta". Tämän seurauksena testi suoritetaan poikkeuksella.

Koska kaikki testitapaukset on hyväksytty, tämä johtaa onnistuneeseen testin suorittamiseen.

Todellinen tulos

Koska yllä olevassa esimerkissä on kolme testitapausta, kaikki testitapaukset suoritetaan yksitellen. Katso tuotos alta:

JUnit Esimerkki huomautuksista
JUnit Esimerkki huomautuksista

Katso alla tulostetut lausunnot, jotka näkyvät konsolissa:

@BeforeClass käyttö, suoritetaan ennen kaikkia testitapauksia

@Before-merkintöjen käyttäminen, joka suoritetaan ennen jokaista testitapausta

@After-toiminto, joka suoritetaan jokaisen testitapauksen jälkeen

@Before-merkintöjen käyttäminen, joka suoritetaan ennen jokaista testitapausta

Käyttämällä @Test(timeout) sitä voidaan käyttää aikakatkaisun pakottamiseen JUnit4 testitapausta

@After-toiminto, joka suoritetaan jokaisen testitapauksen jälkeen

@Before-merkintöjen käyttäminen, joka suoritetaan ennen jokaista testitapausta

Käyttämällä @Test(expected) -toimintoa se tarkistaa tietyn poikkeuksen varalta suorituksensa aikana

@After-toiminto, joka suoritetaan jokaisen testitapauksen jälkeen

@AfterClassilla, suoritetaan kaikkien testitapausten jälkeen

JUnit Assert Class

Tämä luokka tarjoaa joukon väitemenetelmiä, jotka ovat hyödyllisiä testitapauksen kirjoittamisessa. Jos kaikki väitteet hyväksytään, testitulokset ovat onnistuneita. Jos jokin väitelause epäonnistuu, testitulokset epäonnistuvat.

Kuten aiemmin huomasit, alla olevassa taulukossa kuvataan tärkeitä Assert-menetelmiä ja kuvaus:

S.No. Menetelmä Tuotetiedot
1. void assertEquals (oletettu looginen arvo, todellinen looginen arvo) Se tarkistaa, ovatko kaksi arvoa samanlaisia ​​kuin Object-luokan yhtäläinen-metodi
2. void assertFalse (boolen ehto) toiminto on tarkistaa, että ehto on epätosi.
3. void assertNotNull(Object object) "assertNotNull"-toiminto on tarkistaa, että objekti ei ole tyhjä.
4. void assertNull(Objektiobjekti) "assertNull"-toiminto on tarkistaa, että objekti on tyhjä.
5. void assertTrue (boolen ehto) "assertTrue"-toiminto on tarkistaa, että ehto on tosi.
6. void fail () Jos haluat heittää väitevirheen, sinulla on fail(), joka johtaa aina epäonnistumiseen.
7. void assertSame([merkkijonoviesti] "assertSame" -toiminto on tarkistaa, että nämä kaksi objektia viittaavat samaan objektiin.
8. void assertNotSame([merkkijonoviesti] "assertNotSame" -toiminto on varmistaa, että nämä kaksi objektia eivät viittaa samaan objektiin.

JUnit Testitapausten luokka

Useiden testien suorittamiseen on saatavilla TestCase-luokka org.junit.TestCase paketteja. @Testimerkintä kertoo JUnit että tämä public void -menetelmä (tästä testitapaus), johon se on liitetty, voidaan suorittaa testitapauksena.

Alla olevassa taulukossa on joitain tärkeitä käytettävissä olevia menetelmiä org.junit.TestCase luokka:

S.No. Menetelmä Tuotetiedot
1. int countTestCases() Tätä menetelmää käytetään laskemaan kuinka monta testitapausta on suorittanut suorita (TestResult tr) menetelmällä.
2. TestResult createResult() Tätä menetelmää käytetään luomaan a Testitulos esine.
3. Merkkijono getName () Tämä menetelmä palauttaa merkkijonon, joka on vain a Testitapaus.
4. TestResult run() Tätä menetelmää käytetään testin suorittamiseen, joka palauttaa a Testitulos objekti
5. tyhjä ajo (testitulos) Tätä menetelmää käytetään testin suorittamiseen, jolla on a Testitulos esine, joka ei palauta mitään.
6. void setName (merkkijono) Tätä menetelmää käytetään a:n nimen asettamiseen Testitapaus.
7. void setUp() Tätä menetelmää käytetään resurssiassosiaatiokoodin kirjoittamiseen. esim. Luo tietokantayhteys.
8. void tearDown() Tätä menetelmää käytetään resurssijulkaisukoodin kirjoittamiseen. esim. Vapauta tietokantayhteys tapahtuman suorittamisen jälkeen.

JUnit Testitulosluokka

Kun suoritat testin, se palauttaa tuloksen (muodossa Testitulos esine). 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 luokassa org.junit.TestResult:

S.No. Menetelmä Tuotetiedot
1. void addError (testi, heitettävissä t) Tätä menetelmää käytetään, jos haluat lisätä virheen testiin.
2. void addFailure (testi, AssertionFailedError t) Tätä menetelmää käytetään, jos haluat lisätä vian virheiden luetteloon.
3. void endTest (testi) Tätä menetelmää käytetään ilmoittamaan, että testi on suoritettu (valmis)
4. int errorCount() Tätä menetelmää käytetään virheen havaitsemiseen testin suorittamisen aikana.
5. Luettelo virheet () Tämä menetelmä yksinkertaisesti palauttaa virheiden kokoelman (luettelo tässä).
6. int errorCount() Tätä menetelmää käytetään testaamaan testin suorittamisen aikana havaittujen virheiden määrä.
7. tyhjä ajo (TestCase-testi) Tätä menetelmää käytetään testitapauksen suorittamiseen.
8. int runCount() Tämä menetelmä yksinkertaisesti laskee suoritetun testin.
9. mitätön aloitustesti (testi) Tätä menetelmää käytetään ilmoittamaan testin alkamisesta.
10. void stop() Tätä menetelmää käytetään pysäytettävän koekäytön suorittamiseen.

JUnit Test Suite Class

Jos haluat suorittaa useita testejä tietyssä järjestyksessä, se voidaan tehdä yhdistämällä kaikki testit yhteen paikkaan. Tätä paikkaa kutsutaan testisviiteiksi.

Katso alla olevasta taulukosta tärkeimmät käytetyt menetelmät org.junit.TestSuite luokka:

S.No. Menetelmä Tuotetiedot
1. void addTest (testi) Tätä menetelmää käytetään, jos haluat lisätä sarjaan testin.
2. void addTestSuite(Class testiluokka) Tätä menetelmää käytetään, jos haluat määrittää luokan, kun lisäät testin sarjaan.
3. int countTestCases() Tätä menetelmää käytetään, jos haluat laskea testitapausten lukumäärän.
4. Merkkijono getName () Tätä menetelmää käytetään testipaketin nimen saamiseksi.
5. tyhjä ajo (testitulos) Tätä menetelmää käytetään testin suorittamiseen ja testitulosten keräämiseen Testitulos esine.
6. void setName (merkkijono) Tätä menetelmää käytetään nimen asettamiseen TestSuite.
7. Testaa testiAt(int index) 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ä Suitessa.
9. staattinen testivaroitus (merkkijonoviesti) 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 Selenium yksikkötestin kirjoittamisessa hyödyllisiä huomautuksia.
  • Luokat, jotka ovat erittäin hyödyllisiä testitapausta kirjoitettaessa
    • org.junit.Assert
    • org.junit.TestCase
    • org.junit.TestResult
    • org.junit.TestSuite
  • Tärkeä ja usein käytetty JUnit huomautusluettelo@Ennen@BeforeClass@After

    @Oppitunnin jälkeen

    @Testata

    @Jättää huomiotta