Junit Assert e AssertEquals con l'esempio

โšก Riepilogo intelligente

JUnit I metodi Assert e AssertEquals determinano lo stato di superamento o fallimento di un caso di test confrontando i valori attesi con quelli effettivi. Questa risorsa illustra i metodi assert forniti da org.junit.Assert, incluse le asserzioni booleane, nulle, di identitร , di uguaglianza e sugli array, con un esempio completo e funzionante.

  • โœ… Scopo: I metodi di asserzione di org.junit.Assert verificano le condizioni e rilevano gli errori nei test.
  • ๐Ÿ”ข Tipologie di metodo: Le asserzioni booleane, nulle, identiche, uguali, uguali tra array e con messaggio di errore coprono i controlli piรน comuni.
  • ๐ŸŸฐ assertEquals: Confronta i valori utilizzando il metodo equals(), wrapping prima gli elementi primitivi si trasformano in oggetti.
  • ๐Ÿ”ฌ Virgola mobile: รˆ necessaria una tolleranza delta quando si confrontano valori float o double.
  • ๐Ÿงช Esempio: Una classe di test e un relativo runner dimostrano che ogni istruzione assert chiave restituisce true.

JUnit Assert e AssertEquals

Cos'รจ Junit Assert?

Il metodo `assert` รจ utile per determinare lo stato di superamento o fallimento di un caso di test. I metodi `assert` sono forniti dalla classe `org.junit.Assert`, che estende la classe `java.lang.Object`.

Esistono vari tipi di asserzioni, come Booleane, Null, Identitร , ecc.

JUnit Fornisce una classe denominata Assert, che offre una serie di metodi di asserzione utili per scrivere casi di test e rilevare errori durante i test.

I metodi assert sono forniti dalla classe org.junit.Assert, che estende il java.lang.Oggetto classe.

JUnit Metodi di affermazione

Booleano

Se si desidera verificare le condizioni booleane (vero o falso), รจ possibile utilizzare i seguenti metodi di asserzione:

  1. assertTrue (condizione)
  2. assertFalse (condizione)

Qui la condizione รจ un valore booleano.

Oggetto nullo

Se vuoi controllare il valore iniziale di un oggetto/variabile, hai a disposizione i seguenti metodi:

  1. assertNull(oggetto)
  2. assertNotNull(oggetto)

Qui l'oggetto รจ un Java oggetto, per esempio assertNull(effettivo);

Identico

Se vuoi verificare se gli oggetti sono identici (ovvero, confrontando due riferimenti allo stesso Java oggetto) o diverso:

  1. assertSame(expected, actual) โ€” Restituirร  vero se previsto == effettivo.
  2. assertNotSame(previsto, effettivo)

Asserisci uguale

Se si desidera verificare l'uguaglianza di due oggetti, รจ possibile utilizzare il seguente metodo:

  • assertEquals(previsto, effettivo)

Restituirร  vero se previsto.uguale(effettivo) restituisce true.

Asserisci array uguale a

Se si desidera verificare l'uguaglianza degli array, รจ possibile utilizzare il seguente metodo:

  • assertArrayEquals(previsto, effettivo)

Il metodo sopra descritto deve essere utilizzato se gli array hanno la stessa lunghezza. Per ogni valore valido per i, puoi verificarlo come indicato di seguito:

  • assertEquals(expected[i], actual[i])
  • assertArrayEquals(expected[i], actual[i])

Messaggio di errore

Se vuoi generare errori di asserzione, devi farlo fallire(), il che si traduce sempre in un verdetto negativo.

  • errore(messaggio);

รˆ possibile avere un metodo di asserzione con un'aggiunta Corda parametro come primo parametro. Questa stringa verrร  aggiunta al messaggio di errore se l'asserzione fallisce. Ad esempio, messaggio di errore puรฒ essere scritto come:

  • assertEquals(messaggio, previsto, effettivo)

JUnit assertEquals

Hai assertEquals(a, b), che si basa sul equivale () metodo della classe Object.

  • Qui verrร  valutato come a.equals(b).
  • Qui la classe in esame viene utilizzata per determinare un'adeguata relazione di uguaglianza.
  • Se una classe non sovrascrive il file equivale () metodo del Oggetto classe, otterrร  il comportamento predefinito della equivale () metodo, ovvero identitร  dell'oggetto.

If a and b sono primitivi come byte, int, booleano, ecc., quindi per assertEquals(a, b) verrร  eseguita la seguente operazione:

a and b verranno convertiti nel tipo di oggetto wrapper equivalente (Byte, Intero, Booleano, ecc.), e poi a.equals(b) sarร  valutato.

Ad esempio, consideriamo le stringhe riportate di seguito che hanno gli stessi valori; verifichiamolo utilizzando assertEquals:

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

L'istruzione assert di cui sopra restituirร  true poichรฉ obj1.equals(obj2) restituisce true.

Asserzioni in virgola mobile

Quando si desidera confrontare i tipi a virgola mobile (ad esempio, doppio or galleggiante), รจ necessario un parametro aggiuntivo obbligatorio, deltaper evitare problemi con gli errori di arrotondamento durante i confronti in virgola mobile.

L'asserzione viene valutata come indicato di seguito:

  • Math.abs(previsto โ€“ effettivo) <= delta

Per esempio:

assertEquals(aDoubleValore, un altroDoubleValore, 0.001)

JUnit Esempio di affermazione

L'esempio seguente mostra come asserire una condizione utilizzando JUnit affermare metodi.

Creiamo una semplice classe di test chiamata Test di asserzione Junit4.java e una classe di test runner TestRunner.java.

Creerai alcune variabili e importanti istruzioni assert in JUnit.

In questo esempio, eseguirete la nostra classe di test utilizzando TestRunner.java.

Passo 1) Creiamo una classe che copra tutti i metodi di asserzione importanti in JUnit:

Test di asserzione Junit4.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);
    }
}

Passo 2) รˆ necessario creare una classe di esecuzione dei test per eseguire la classe sopra menzionata:

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

Passo 3) Analizziamo passo passo l'output atteso. Consideriamo una per una tutte le istruzioni assert:

  1. assertEquals(stringa1, stringa2);

Ora confronta string1="Junit" con string2="Junit" utilizzando il metodo equals della classe Object. Sostituisci il metodo assertEquals con il metodo java.lang.Object.equals():

string1.equals(string2) => restituisce true

Quindi assertEquals(string1, string2) restituirร  vero.

  1. assertStesso(stringa3, stringa4);

La funzionalitร  โ€œassertSame()โ€ serve a verificare che i due oggetti si riferiscano allo stesso oggetto. Poichรฉ string3="test" e string4="test", sia string3 che string4 sono dello stesso tipo, quindi assertSame(string3, string4) restituirร  vero.

  1. assertNotSame(string1, string3);

La funzionalitร  โ€œassertNotSame()โ€ serve a verificare che i due oggetti non facciano riferimento allo stesso oggetto. Poichรฉ string1=โ€Junitโ€ e string3=โ€testโ€, sia string1 che string3 sono di tipi diversi, quindi assertNotSame(string1, string3) restituirร  vero.

  1. assertNotNull(stringa1);

La funzionalitร  โ€œassertNotNull()โ€ serve a verificare che un oggetto non sia nullo. Poichรฉ string1="Junit", che รจ un valore non nullo, assertNotNull(string1) restituirร  vero.

  1. assertNull(stringa5);

La funzionalitร  โ€œassertNull()โ€ serve a verificare che un oggetto sia nullo. Poichรฉ string5=null, che รจ un valore nullo, assertNull(string5) restituirร  vero.

  1. assertTrue(variabile1 < variabile2);

La funzionalitร  โ€œassertTrue()โ€ serve a verificare che una condizione sia vera. Poichรฉ la variabile1=1 e la variabile2=2, il che dimostra che la condizione variabile1 < variabile2 รจ vera, assertTrue(variabile1 < variabile2) restituirร  vero.

  1. assertArrayEquals(airethematicArrary1, airethematicArrary2);

La funzionalitร  โ€œassertArrayEquals()โ€ serve a verificare che lโ€™array previsto e lโ€™array risultante siano uguali. Il tipo di array potrebbe essere int, long, short, char, byte o java.lang.Object. Poichรฉ airethematicArrary1 = { 1, 2, 3 } e airethematicArrary2 = { 1, 2, 3 }, il che dimostra che entrambi gli array sono uguali, assertArrayEquals(airethematicArrary1, airethematicArrary2) restituirร  vero.

Poichรฉ tutte e sette le affermazioni affermano del Test di asserzione Junit4.java Se la classe restituisce true, quando esegui il test assert class, verrร  restituito un test riuscito (vedi l'output qui sotto).

Passo 4) Fai clic con il pulsante destro del mouse su Junit4AssertionTest.java e seleziona Esegui come -> JUnit. Vedrai l'output come indicato di seguito:

JUnit Esempio di affermazione

L'output sopra riportato mostra un risultato del test positivo, come previsto.

DOMANDE FREQUENTI

Sรฌ. Gli assistenti basati sull'IA possono generare asserzioni come `assertEquals`, `assertTrue` e altre simili a partire dal comportamento previsto di un metodo. รˆ comunque consigliabile rivedere i valori previsti e i casi limite per garantire che i test siano significativi.

Sรฌ. L'IA puรฒ suggerire assertEquals anzichรฉ assertSame o assertArrayEquals in base a ciรฒ che si sta confrontando. Questo riduce gli errori comuni, come ad esempio controllare i riferimenti quando si intendeva confrontare i valori.

assertEquals verifica l'uguaglianza dei valori utilizzando il metodo equals(). assertSame verifica che due riferimenti puntino esattamente allo stesso oggetto in memoria. Due oggetti con lo stesso valore possono far fallire assertSame.

Quando un'asserzione fallisce, JUnit genera un AssertionError, contrassegna il test come fallito e riporta il messaggio opzionale insieme ai valori previsti e a quelli effettivi per aiutarti a eseguire il debug del test.

Riassumi questo post con: