Junit Assert & AssertEquals näitega

⚡ Nutikas kokkuvõte

JUnit Assert ja AssertEquals määravad testi sooritamise või ebaõnnestumise staatuse, võrreldes oodatavaid ja tegelikke väärtusi. See ressurss selgitab org.junit.Asserti pakutavaid assert-meetodeid, sealhulgas tõeväärtus-, null-, identsus-, võrdsus- ja massiiviväiteid, koos täieliku töötava näitega.

  • Eesmärk: Org.junit.Assert meetodid kontrollivad tingimusi ja tuvastavad testi ebaõnnestumisi.
  • 🔢 Meetodi tüübid: Boole'i, null-, identne-, võrdub-, massiivivõrdub- ja veateateväited hõlmavad levinud kontrolle.
  • 🟰 assertEquals: Võrdleb väärtusi meetodi equals() abil, murrabping primitiivid esmalt objektideks.
  • 🔬 Ujukoma: Ujuk- või topeltväärtuste võrdlemisel on vaja delta tolerantsi.
  • 🧪 Näide: Testiklass ja testi käivitaja demonstreerivad iga võtmetähtsusega assert-lauset, mis tagastab väärtuse true.

JUnit Assert ja AssertEquals

Mis on Junit Assert?

Assert on meetod, mis on kasulik testi sooritamise või mittesooritamise staatuse määramiseks. Assert-meetodid pakub klass org.junit.Assert, mis laiendab klassi java.lang.Object.

Väiteid on erinevat tüüpi, näiteks Boole'i, Null, Identne jne.

JUnit pakub klassi nimega Assert, mis pakub hulgaliselt kinnitusmeetodeid, mis on kasulikud testide kirjutamisel ja testivigade tuvastamisel.

Väitemeetodid pakub klass org.junit.Assert, mis pikendab java.lang.Object klass.

JUnit Kinnitusmeetodid

Boolean

Boole'i ​​tingimuste (tõene või väär) testimiseks võite kasutada järgmisi assert-meetodeid:

  1. kinnitadaTrue (tingimus)
  2. kinnitama vale (tingimus)

Siin on tingimuseks tõeväärtus.

Nullobjekt

Kui soovite kontrollida objekti/muutuja algväärtust, on teil järgmised meetodid.

  1. assertNull(objekt)
  2. assertNotNull(objekt)

Siin on objekt a Java objekt, nt kinnitama Null(tegelik);

Identne

Kui soovite kontrollida, kas objektid on identsed (st võrrelda kahte viidet samale objektile Java objekt) või erinev:

  1. assertSame(oodatav, tegelik) — Tagastab tõese väärtuse, kui oodatud == tegelik.
  2. assertNotSame (oodatud, tegelik)

Väidab võrdub

Kahe objekti võrdsuse kontrollimiseks on olemas järgmine meetod:

  • assertEquals (oodatav, tegelik)

See on tõsi, kui oodatav.võrdub(tegelik) tagastab tõele.

Kinnitage massiiv võrdub

Massiivide võrdsuse testimiseks on teil järgmine meetod:

  • assertArrayEquals (oodatav, tegelik)

Ülaltoodud meetodit tuleb kasutada, kui massiividel on sama pikkus. Iga kehtiva väärtuse korral i, saate seda kontrollida järgmiselt:

  • assertEquals(eeldatav[i], tegelik[i])
  • assertArrayEquals(eeldatav[i], tegelik[i])

Ebaõnnestunud sõnum

Kui soovite väites viga teha, on teil see ebaõnnestub (), mis alati annab tulemuseks negatiivse hinnangu.

  • ebaõnnestumine(teade);

Sul võib olla kinnitusmeetod koos lisaga nöör parameeter esimese parameetrina. See string lisatakse veateatele, kui väide ebaõnnestub. Näiteks ebaõnnestumine(teade) võib kirjutada järgmiselt:

  • assertEquals(sõnum, oodatav, tegelik)

JUnit kinnitama Võrdsed

Sul on assertEquals(a, b), mis tugineb võrdub () Objekti klassi meetod.

  • Siin hinnatakse seda kui a.võrdub(b)-ga.
  • Siin kasutatakse testitavat klassi sobiva võrdsussuhte määramiseks.
  • Kui klass ei alista võrdub () meetod objekt klassi, saab see vaikimisi käitumise võrdub () meetod, st objekti identiteet.

If a ja b on primitiivid nagu bait, int, loogilinejne, siis tehakse assertEquals(a, b) jaoks järgmist:

a ja b teisendatakse nendega samaväärseks ümbrisobjektitüübiks (Bait, täisarv, tõeväärtusjne) ja siis a.võrdub(b)-ga hinnatakse.

Näiteks vaatleme allpool mainitud stringe, millel on samad väärtused; kontrollime seda funktsiooni assertEquals abil:

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

Ülaltoodud assert-lause tagastab väärtuse tõene, kuna obj1.equals(obj2) tagastab väärtuse tõene.

Ujukoma väited

Kui soovite võrrelda ujukomaarvude tüüpe (nt kahekordistada or ujuk), vajate täiendavat kohustuslikku parameetrit, delta, et vältida ümardusvigu ujukomaarvude võrdlemisel.

Väidet hinnatakse järgmiselt:

  • Math.abs(eeldatav – tegelik) <= delta

Näiteks:

assertEquals(aDoubleVäärtus, teineDoubleVäärtus, 0.001)

JUnit Kinnitage näide

Allolev näide demonstreerib, kuidas tingimust esitada, kasutades JUnit kinnitavad meetodid.

Loome lihtsa testiklassi nimega Junit4AssertionTest.java ja proovijooksja klass TestRunner.java.

Sa lood mõned muutujad ja olulised assert-laused JUnit.

Selles näites käivitate meie testiklassi TestRunner.java abil.

Step 1) Loome klassi, mis hõlmab kõiki olulisi assert-lause meetodeid. JUnit:

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);
    }
}

Step 2) Ülaltoodud klassi käivitamiseks peate looma testijaoturi klassi:

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());
    }
}

Step 3) Analüüsime oodatavat väljundit samm-sammult. Vaatleme kõiki väidelauseid ükshaaval:

  1. assertEquals(string1, string2);

Nüüd võrdle string1=”Junit” string2=”Junit”-iga, kasutades Object klassi equals meetodit. Asendades assertEquals meetodi java.lang.Object.equals() meetodiga:

string1.equals(string2) => tagastab tõese väärtuse

Seega assertEquals(string1, string2) tagastab tõsi.

  1. assertSame(string3, string4);

Funktsioon „assertSame()” kontrollib, kas kaks objekti viitavad samale objektile. Kuna string3=”test” ja string4=”test”, on nii string3 kui ka string4 sama tüüpi, seega tagastab assertSame(string3, string4) tõsi.

  1. assertNotSame(string1, string3);

Funktsioon „assertNotSame()” kontrollib, et kaks objekti ei viitaks samale objektile. Kuna string1=”Junit” ja string3=”test”, on nii string1 kui ka string3 erinevat tüüpi, seega tagastab assertNotSame(string1, string3) tõsi.

  1. assertNotNull(string1);

Funktsioon „assertNotNull()” kontrollib, et objekt ei oleks null. Kuna string1=”Junit”, mis on mitte-nullväärtus, tagastab assertNotNull(string1) väärtuse tõsi.

  1. assertNull(string5);

Funktsioon „assertNull()” kontrollib, kas objekt on tühiväärtus. Kuna string5=null, mis on tühiväärtus, tagastab assertNull(string5) väärtuse tõsi.

  1. assertTrue(muutuja1 < muutuja2);

Funktsioon „assertTrue()” kontrollib, kas tingimus on tõene. Kuna muutuja1=1 ja muutuja2=2, mis näitab, et tingimus muutuja1 < muutuja2 on tõene, tagastab assertTrue(muutuja1 < muutuja2) tõsi.

  1. assertArrayEquals(õhutemaatilineMassiv1, õhutemaatilineMassiv2);

Funktsioon „assertArrayEquals()” kontrollib, kas oodatav massiiv ja tulemuseks saadav massiiv on võrdsed. Massiivi tüüp võib olla int, long, short, char, byte või java.lang.Object. Kuna airethematicArrary1 = { 1, 2, 3 } ja airethematicArrary2 = { 1, 2, 3 }, mis näitab, et mõlemad massiivid on võrdsed, tagastab assertArrayEquals(airethematicArrary1, airethematicArrary2) väärtuse tõsi.

Kuna kõik seitse väidavad väiteid Junit4AssertionTest.java Klass return true, kui käivitate testi assert klassi, tagastab see eduka testi (vt allolevat väljundit).

Step 4) Paremklõpsake Junit4AssertionTest.java failil ja seejärel valige Käivita nimega -> JUnit. Näete allolevat väljundit:

JUnit Kinnitage näide

Ülaltoodud väljund näitab ootuspäraselt edukat testi tulemust.

KKK

Jah. Tehisintellekti assistendid saavad meetodi oodatava käitumise põhjal genereerida väiteid assertEquals, assertTrue ja muid väiteid. Siiski peaksite testide sisukuse tagamiseks üle vaatama oodatavad väärtused ja äärmusjuhtumid.

Jah. Tehisintellekt oskab võrdlusobjekti põhjal soovitada assertEquals'i, mitte assertSame'i või assertArrayEquals'i. See vähendab levinud vigu, näiteks viidete kontrollimist, kui kavatsesite väärtusi võrrelda.

Funktsioon assertEquals kontrollib väärtuste võrdsust meetodi equals() abil. Funktsioon assertSame kontrollib, kas kaks viidet osutavad täpselt samale objektile mälus. Kahe võrdse väärtusega objekti korral võib funktsioon assertSame nurjuda.

Kui väide ebaõnnestub, JUnit viskab AssertionError vea, märgib testi ebaõnnestunuks ja annab teada valikulise teate koos eeldatavate ja tegelike väärtustega, mis aitavad teil testi siluda.

Võta see postitus kokku järgmiselt: