Junit Assert & AssertEquals esimerkin kanssa

Mikรค on Junit Assert?

Assert on menetelmรค, joka on hyรถdyllinen testitapauksen hyvรคksytyn tai epรคonnistuneen tilan mรครคrittรคmisessรค. Assert-menetelmรคt tarjoaa luokka org.junit.Assert, joka laajentaa java.lang.Object-luokkaa.

On olemassa erilaisia โ€‹โ€‹vรคitteitรค, kuten Boolean, Null, Identical jne.

Junit tarjoaa luokan nimeltรค Assert, joka tarjoaa joukon vahvistusmenetelmiรค, jotka ovat hyรถdyllisiรค testitapausten kirjoittamisessa ja testin epรคonnistumisen havaitsemisessa

Vรคitemenetelmรคt tarjoaa luokka org.junit.Assert joka ulottuu java.lang.Object luokka.

JUnit Toteutusmenetelmรคt

boolean

Jos haluat testata boolen ehtoja (tosi tai epรคtosi), voit kรคyttรครค seuraavia vahvistusmenetelmiรค

  1. vรคittรครค totta(ehto)
  2. vรคittรครค False (ehto)

Tรคssรค ehto on boolen arvo.

Nollaobjekti

Jos haluat tarkistaa objektin/muuttujan alkuarvon, sinulla on seuraavat menetelmรคt:

  1. assertNull(objekti)
  2. assertNotNull(objekti)

Tรคssรค kohde on Java objekti esim assertNull(todellinen);

identtinen

Jos haluat tarkistaa, ovatko objektit identtisiรค (eli vertaamalla kahta viittausta samaan Java-objektiin) vai erilaisia.

  1. assertSame(odotettu, todellinen), Se tulee takaisin todeksi, jos odotettu == todellinen
  2. assertNotSame (odotettu, todellinen)

Vรคitรค yhtรค kuin

Jos haluat testata kahden objektin yhtรคlรคisyyttรค, sinulla on seuraavat menetelmรคt

  • assertEquals (odotettu, todellinen)

Se on totta, jos: odotettu.yhtรค( todellinen ) palaa todeksi.

Assert Array Equals

Jos haluat testata taulukoiden tasa-arvoa, sinulla on seuraavat alla olevat menetelmรคt:

  • assertArrayEquals(odotettu, todellinen)

Yllรค olevaa menetelmรครค on kรคytettรคvรค, jos taulukoilla on sama pituus jokaiselle kelvolliselle arvolle i, voit tarkistaa sen alla kuvatulla tavalla:

  • assertEquals(odotettu[i],todellinen[i])
  • assertArrayEquals(odotettu[i],todellinen[i])

Epรคonnistunut viesti

Jos haluat heittรครค vรคitevirheen, niin olet tehnyt epรคonnistua () joka johtaa aina epรคonnistuneeseen tuomioon.

  • Epรคonnistui(viesti);

Sinulla voi olla vรคitemenetelmรค ylimรครคrรคisellรค jono parametri ensimmรคisenรค parametrina. Tรคmรค merkkijono liitetรครคn virheviestiin, jos vรคite epรคonnistuu. Esim epรคonnistuu (viesti) voidaan kirjoittaa nimellรค

  • assertEquals( viesti, odotettu, todellinen)

JUnit vรคittรครคEquals

Sinulla on assertEquals(a,b) joka perustuu on yhtรค suuri () Object-luokan menetelmรค.

  • Tรคssรค sitรค arvostellaan a.on yhtรค kuin( b ).
  • Tรคssรค testattavaa luokkaa kรคytetรครคn sopivan tasa-arvon mรครคrittรคmiseen.
  • Jos luokka ei ohita on yhtรค suuri () menetelmรค objekti luokassa, se saa oletuskรคyttรคytymisen on yhtรค suuri () menetelmรคllรค eli objektin identiteetillรค.

If a ja b ovat primitiivisiรค, kuten tavu, int, booleanjne., niin assertEquals(a,b):lle tehdรครคn seuraava:

a ja b muunnetaan vastaavaan kรครคreobjektityyppiin (tavu, kokonaisluku, booleanjne.) ja sitten a. on yhtรค kuin( b ) tullaan arvioimaan.

Esimerkki: Harkitse alla mainittuja merkkijonoja, joilla on samat arvot, testataan se kรคyttรคmรคllรค assertTrue

String obj1="Junit";
String obj2="Junit";
assertEquals(obj1,obj2);

Yllรค oleva vรคitelause palauttaa tosi, kun obj1.equals(obj2) palauttaa tosi.

Liukuluku vรคitteet

Kun haluat vertailla liukulukutyyppejรค (esim kaksinkertainen or kellua), tarvitset lisรคparametrin delta vรคlttรครคksesi pyรถristysvirheisiin liittyvรคt ongelmat liukulukuvertailujen aikana.

Vรคite arvioi seuraavasti:

  • Math.abs( odotettu โ€“ todellinen ) <= delta

Esimerkiksi:

assertEquals(aDoubleArvo, toinenDoubleArvo, 0.001)

JUnit Vahvista esimerkki

Alla oleva esimerkki osoittaa, kuinka ehto vahvistetaan kรคyttรคmรคllรค JUnit vรคittรครค menetelmiรค.

Luodaan yksinkertainen testiluokka nimeltรค Junit4AssertionTest.java ja koejuoksijoiden luokka TestRunner.java.

Luot sisรครคn muutamia muuttujia ja tรคrkeitรค vรคitteitรค JUnit.

Tรคssรค esimerkissรค suoritat testiluokkamme kรคyttรคmรคllรค TestRunner.javaa

Vaihe 1) Luodaan luokka, joka kattaa kaikki tรคrkeรคt junitin vรคitteet:

Junit4AssertionTest.java

package guru99.junit;		

import static org.junit.Assert.*;				
import org.junit.Test;		


public class Junit4AssertionTest {				

    @Test		
    public void testAssert(){					
        		
        //Variable declaration		
        String string1="Junit";					
        String string2="Junit";					
        String string3="test";					
        String string4="test";					
        String string5=null;					
        int variable1=1;					
        int	variable2=2;					
        int[] airethematicArrary1 = { 1, 2, 3 };					
        int[] airethematicArrary2 = { 1, 2, 3 };					
        		
        //Assert statements		
        assertEquals(string1,string2);					
        assertSame(string3, string4);					
        assertNotSame(string1, string3);					
        assertNotNull(string1);			
        assertNull(string5);			
        assertTrue(variable1<variable2);					
        assertArrayEquals(airethematicArrary1, airethematicArrary2);					
    }		
}		

Vaihe 2) Sinun on luotava testirunner-luokka suorittaaksesi yllรค olevan luokan:

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

Vaihe 3) Analysoidaan odotettu tulos askel askeleelta:

Harkitse kaikkia vรคitelauseita yksitellen:

  1. asserEquals(merkkijono1,merkkijono2);

Vertaa nyt string1=โ€ Junitโ€ merkkijonoon 2=โ€ Junitโ€ yhtรค kuin objektiluokan menetelmรคllรค. AssertEquals-menetelmรคn korvaaminen java.lang.Object.equals()-metodista:

string1.equals(merkkijono2)=> palauttaa tosi

Joten asserEquals(merkkijono1,merkkijono2) palauttaa totta.

  1. assertSame(merkkijono3, merkkijono4);

"assertSame()" -toiminto on tarkistaa, ettรค nรคmรค kaksi objektia viittaavat samaan objektiin.

Koska string3=โ€testโ€ ja string4=โ€testโ€ tarkoittavat, ettรค sekรค merkkijono3 ettรค merkkijono4 ovat samaa tyyppiรค, joten assertSame(merkkijono3, merkkijono4) palauttaa totta.

  1. assertNotSame(merkkijono1, merkkijono3);

"assertNotSame()" -toiminto on varmistaa, ettรค nรคmรค kaksi objektia eivรคt viittaa samaan objektiin.

Koska string1=โ€Junitโ€ ja string3=โ€testโ€ tarkoittavat, ettรค sekรค merkkijono1 ettรค merkkijono3 ovat eri tyyppejรค, joten assertNotSame(merkkijono1, merkkijono3) palauttaa totta.

  1. assertNotNull(merkkijono1);

"assertNotNull()" -toiminto on tarkistaa, ettรค objekti ei ole tyhjรค.

Koska merkkijono1 = "Junit", joka on ei-nolla-arvo, joten assertNotNull(merkkijono1) palauttaa totta.

  1. assertNull(merkkijono5);

"assertNull()" -toiminto on tarkistaa, ettรค objekti on tyhjรค.

Koska string5= null, joka on nolla-arvo, assertNull(merkkijono5) palauttaa totta.

  1. assertTrue(muuttuja1

"assertTrue()" -toiminto on tarkistaa, ettรค ehto on tosi.

Koska muuttuja1=1 ja muuttuja2=2, mikรค osoittaa, ettรค muuttuja1 totta.

  1. assertArrayEquals(ilmateemaattinenMatriisi1, ilmateemaattinenArrary2);

"assertArrayEquals()" -toiminto on tarkistaa, ettรค odotettu taulukko ja tuloksena oleva taulukko ovat yhtรค suuret. Array-tyyppi voi olla int, long, short, char, byte tai java.lang.Object.

Koska airethematicArrary1 = { 1, 2, 3 } ja airethematicArrary2 = { 1, 2, 3 }, mikรค osoittaa, ettรค molemmat taulukot ovat yhtรค suuria, assertArrayEquals(airethematicArrary1, airethematicArrary2) palauttaa totta

Koska kaikki seitsemรคn vรคittรครค Junit4AssertionTest.java luokka palauttaa arvon tosi, joten kun suoritat testivahvistusluokan, se palauttaa onnistuneen testin. (katso tulos alta)

Vaihe 4) Napsauta hiiren kakkospainikkeella Junit4AssertionTest.java ja napsauta runAs->JUnit. Nรคet tulosteen alla olevan kuvan mukaisesti:

JUnit Vahvista esimerkki

Yllรค oleva tulos nรคyttรครค onnistuneen testituloksen odotetusti.

Yhteenveto

Tรคssรค opetusohjelmassa opit kaikki tรคrkeimmรคt vรคittรคmismenetelmรคt JUnit. Olet myรถs nรคhnyt esimerkkejรค vรคitelauseista. Mikรค osoittaa, ettรค jos kaikki vรคitteet palauttavat tosi, testigraafinen kรคyttรถliittymรค palauttaa tosi tuloksen ja jos yksittรคinen testi epรคonnistuu, se palauttaa epรคonnistuneen tuloksen.

Tiivistรค tรคmรค viesti seuraavasti: