Junit Assert & AssertEquals with Example

Sommario:

Anonim

Cos'è Junit Assert?

Assert è un metodo utile per determinare lo stato Pass o Fail di un test case. I metodi assert sono forniti dalla classe org.junit.Assert che estende la classe java.lang.Object.

Esistono vari tipi di asserzioni come Boolean, Null, Identical ecc.

Junit fornisce una classe denominata Assert, che fornisce una serie di metodi di asserzione utili per scrivere casi di test e per rilevare errori di test

I metodi assert sono forniti dalla classe org.junit.Assert che estende la classe java.lang.Object .

In questo tutorial imparerai-

  • Metodi JUnit Assert
  • Booleano
  • Oggetto nullo
  • Identico
  • Asserire uguale
  • Asserire array uguale
  • Messaggio di errore
  • JUnit assertEquals
  • Asserzioni in virgola mobile
  • Esempio di asserzione di JUnit

Metodi JUnit Assert

Booleano

Se vuoi testare le condizioni booleane (vero o falso), puoi usare 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 i seguenti metodi:

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

In questo caso l'oggetto è un oggetto Java, ad esempio assertNull (effettivo);

Identico

Se vuoi controllare se gli oggetti sono identici (cioè confrontando due riferimenti allo stesso oggetto java), o diversi.

  1. assertSame (atteso, effettivo), restituirà vero se previsto == effettivo
  2. assertNotSame (previsto, effettivo)

Asserire uguale

Se vuoi testare l'uguaglianza di due oggetti, hai i seguenti metodi

  • assertEquals (previsto, effettivo)

Restituirà vero se: atteso.equals (effettivo) restituirà vero.

Asserire array uguale

Se vuoi testare l'uguaglianza degli array, hai i seguenti metodi come indicato di seguito:

  • assertArrayEquals (previsto, effettivo)

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

  • assertEquals (previsto [i], effettivo [i])
  • assertArrayEquals (previsto [i], effettivo [i])

Messaggio di errore

Se vuoi lanciare un errore di asserzione, hai fail () che si traduce sempre in un verdetto di fallimento.

  • Fail (messaggio);

Puoi avere un metodo di asserzione con un parametro String aggiuntivo come primo parametro. Questa stringa verrà aggiunta al messaggio di errore se l'asserzione non riesce. Ad esempio, fail (messaggio) può essere scritto come

  • assertEquals (messaggio, atteso, effettivo)

JUnit assertEquals

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

  • Qui sarà valutato come a.equals (b).
  • Qui la classe sotto test viene utilizzata per determinare una relazione di uguaglianza adeguata.
  • Se una classe non sovrascrive il metodo equals () della classe Object , otterrà il comportamento predefinito del metodo equals () , ovvero l'identità dell'oggetto.

Se un e b sono primitive, come byte , int , boolean , ecc allora quanto segue sarà fatto per assertEquals (A, B):

un e b saranno convertiti nei loro equivalenti tipo di oggetto involucro ( Byte, Integer , booleano , ecc), e poi a.equals (b) saranno valutate.

Ad esempio: considera le stringhe menzionate di seguito che hanno gli stessi valori, proviamolo usando assertTrue

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

L'istruzione assert sopra restituirà true poiché obj1.equals (obj2) restituirà true.

Asserzioni in virgola mobile

Quando si desidera confrontare i tipi in virgola mobile (ad esempio double o float ), è necessario un ulteriore delta del parametro richiesto per evitare problemi con errori di arrotondamento durante i confronti in virgola mobile.

L'asserzione valuta come indicato di seguito:

  • Math.abs (previsto - effettivo) <= delta

Per esempio:

assertEquals (aDoubleValue, anotherDoubleValue, 0.001)

Esempio di asserzione di JUnit

L'esempio seguente mostra come affermare una condizione utilizzando i metodi di asserzione JUnit.

Creiamo una semplice classe di test denominata Junit4AssertionTest.java e una classe di test runner TestRunner.java .

Creerai poche variabili e importanti istruzioni di asserzione in JUnit.

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

Passaggio 1) Consente di creare una classe che copre tutti i metodi di dichiarazione di asserzione importanti in junit:

Junit4AssertionTest.java

pacchetto guru99.junit;import statico org.junit.Assert. *;import org.junit.Test;classe pubblica Junit4AssertionTest {@Testpublic void testAssert () {// Dichiarazione di variabileString string1 = "Junit";String string2 = "Junit";String string3 = "test";String string4 = "test";String string5 = null;int variabile1 = 1;int variabile2 = 2;int [] airethematicArrary1 = {1, 2, 3};int [] airethematicArrary2 = {1, 2, 3};// Asserire dichiarazioniassertEquals (string1, string2);assertSame (string3, string4);assertNotSame (string1, string3);assertNotNull (string1);assertNull (stringa5);assertTrue (variabile1 

Passaggio 2) È necessario creare una classe di runner di prova per eseguire la classe sopra:

TestRunner.java

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

Passaggio 3) Analizziamo passo passo l'output atteso:

Considera tutte le affermazioni una per una:

  1. assertEquals (string1, string2);

Ora confronta string1 = "Junit" con string2 = "Junit" con il metodo uguale della classe dell'oggetto. Sostituzione del metodo assertEquals dal metodo java.lang.Object.equals ():

string1.equals (string2) => restituisce true

Quindi assertEquals (stringa1, stringa2) restituirà true .

  1. assertSame (string3, string4);

La funzionalità "assertSame ()" consiste nel verificare che i due oggetti facciano riferimento allo stesso oggetto.

Poiché string3 = "test" e string4 = "test" significa che sia string3 che string4 sono dello stesso tipo, quindi assertSame (string3, string4) restituirà true .

  1. assertNotSame (string1, string3);

La funzionalità "assertNotSame ()" consiste nel verificare che i due oggetti non facciano riferimento allo stesso oggetto.

Poiché string1 = "Junit" e string3 = "test" significa che sia string1 che string3 sono di tipi diversi, quindi assertNotSame (string1, string3) restituirà true .

  1. assertNotNull (string1);

La funzionalità "assertNotNull ()" consiste nel verificare che un oggetto non sia nullo.

Poiché string1 = "Junit", che è un valore non nullo, assertNotNull (string1) restituirà true .

  1. assertNull (stringa5);

La funzionalità "assertNull ()" consiste nel verificare che un oggetto sia nullo.

Poiché stringa5 = null che è un valore nullo, quindi assertNull (stringa5) restituirà true .

  1. assertTrue (variabile1

La funzionalità "assertTrue ()" consiste nel verificare che una condizione sia vera.

Poiché variabile1 = 1 e variabile2 = 2, che mostra che variabile1 vero .

  1. assertArrayEquals (airethematicArrary1, airethematicArrary2);

La funzionalità "assertArrayEquals ()" consiste nel 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} che mostra che entrambi gli array sono uguali, quindi assertArrayEquals (airethematicArrary1, airethematicArrary2) restituirà true

Poiché tutte e sette le istruzioni assert della classe Junit4AssertionTest.java restituiscono true, quindi quando esegui la classe assert test, restituirà un test riuscito. (vedi l'output sotto)

Passaggio 4) Fare clic con il pulsante destro del mouse su Junit4AssertionTest.java e fare clic su runAs-> JUnit. Vedrai l'output come indicato di seguito:

L'output sopra mostra un risultato del test riuscito come previsto.

Sommario:

In questo tutorial, hai imparato tutti i tipi importanti di metodi di asserzione forniti da JUnit. Inoltre, hai visto gli esempi di affermazioni di asserzione. Il che mostra che se tutte le istruzioni assert restituiscono true, la GUI del test restituirà un risultato true e se il singolo test fallisce restituirà un risultato non riuscito.