Junit Assert e AssertEquals con l'esempio
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 si estende java.lang.Oggetto classe.
JUnit Metodi di affermazione
Booleano
Se vuoi testare le condizioni booleane (vero o falso), puoi usare i seguenti metodi assert
- assertTrue (condizione)
- 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:
- assertNull(oggetto)
- assertNotNull(oggetto)
Ecco l'oggetto Java oggetto per esempio assertNull(effettivo);
Identico
Se vuoi verificare se gli oggetti sono identici (cioè confrontando due riferimenti allo stesso oggetto Java), o diversi.
- assertSame(previsto, effettivo), Restituirà vero se previsto == effettivo
- assertNotSame(previsto, effettivo)
Asserisci uguale
Se vuoi testare l'uguaglianza di due oggetti, hai i seguenti metodi
- assertEquals(previsto, effettivo)
Restituirà vero se: previsto.uguale (effettivo) restituisce true.
Asserisci array uguale a
Se si desidera testare l'uguaglianza degli array, sono disponibili i seguenti metodi, come indicato di seguito:
- assertArrayEquals(previsto, effettivo)
Il metodo precedente deve essere utilizzato se gli array hanno la stessa lunghezza, per ciascun valore valido per i, puoi verificarlo come indicato di seguito:
- assertEquals(previsto[i],effettivo[i])
- assertArrayEquals(previsto[i],effettivo[i])
Messaggio di errore
Se vuoi generare errori di asserzione, devi farlo fallire() ciò si traduce sempre in un verdetto di fallimento.
- Fallito(messaggio);
Puoi avere un metodo di asserzione con un ulteriore Corda parametro come primo parametro. Questa stringa verrà aggiunta al messaggio di errore se l'asserzione fallisce. Per esempio fallire (messaggio) può essere scritto come
- assertEquals( messaggio, previsto, effettivo)
JUnit assertEquals
Hai assertEquals(a,b) che si basa su equivale () metodo della classe Object.
- Qui verrà valutato come a.uguale( b ).
- Qui la classe in esame viene utilizzata per determinare un'adeguata relazione di uguaglianza.
- Se una classe non sovrascrive il file equivale () metodo di Oggetto class, otterrà il comportamento predefinito di equivale () metodo, ovvero l'identità dell'oggetto.
If a e b sono primitivi come byte, int, booleano, ecc. allora verrà fatto quanto segue per assertEquals(a,b):
a e b verranno convertiti nel tipo di oggetto wrapper equivalente (Byte, numero intero, Booleano, ecc.), e poi a.uguale( b ) sarà valutato.
Ad esempio: considera le stringhe menzionate di seguito con gli stessi valori, testiamolo utilizzando assertTrue
String obj1="Junit"; String obj2="Junit"; assertEquals(obj1,obj2);
L'istruzione assert sopra restituirà vero poiché obj1.equals(obj2) restituisce vero.
Asserzioni in virgola mobile
Quando vuoi confrontare tipi in virgola mobile (es doppio or galleggiante), è necessario un parametro obbligatorio aggiuntivo delta per evitare problemi con 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 affermare una condizione utilizzando JUnit affermare metodi.
Creiamo una semplice classe di test denominata Test di asserzione Junit4.java e una classe di test runner TestRunner.java.
Creerai poche variabili e importanti dichiarazioni di affermazione in JUnit.
In questo esempio, eseguirai la nostra classe di test utilizzando TestRunner.java
Passo 1) Creiamo una classe che copra tutti i metodi importanti delle istruzioni assert 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 test runner per eseguire la classe precedente:
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 dopo passo l'output atteso:
Considera tutte le affermazioni una per una:
- assertEquals(string1,string2);
Ora confronta string1=" Junit" con string2=" Junit" con il metodo equals della classe oggetto. Sostituzione del metodo assertEquals dal metodo java.lang.Object.equals():
string1.equals(string2)=> restituisce vero
Quindi verrà restituito assertEquals(string1,string2). vero.
- assertStesso(stringa3, stringa4);
La funzionalità "assertSame()" consiste nel verificare che i due oggetti si riferiscano allo stesso oggetto.
Poiché string3="test" e string4="test" significa che sia string3 che string4 sono dello stesso tipo, assertSame(string3, string4) restituirà vero.
- assertNotSame(string1, string3);
La funzionalità "assertNotSame()" consiste nel verificare che i due oggetti non si riferiscano allo stesso oggetto.
Poiché string1="Junit" e string3="test" significa che sia string1 che string3 sono di tipo diverso, quindi assertNotSame(string1, string3) restituirà vero.
- assertNotNull(stringa1);
La funzionalità "assertNotNull()" consiste nel verificare che un oggetto non sia nullo.
Poiché string1= "Junit" che è un valore non nullo, verrà restituito assertNotNull(string1). vero.
- assertNull(stringa5);
La funzionalità "assertNull()" serve a verificare che un oggetto sia nullo.
Poiché string5= null che è un valore null, verrà restituito assertNull(string5). vero.
- assertTrue(variabile1
La funzionalità "assertTrue()" serve a verificare che una condizione sia vera.
Poiché variabile1=1 e variabile2=2, che mostra quella variabile1 vero.
- 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, assertArrayEquals(airethematicArrary1, airethematicArrary2) restituirà vero
Poiché tutti e sette affermano affermazioni di Test di asserzione Junit4.java class restituisce true, quindi quando esegui la classe test assert, restituirà un test riuscito. (vedi l'output qui sotto)
Passo 4) Fare clic con il tasto destro del mouse su Junit4AssertionTest.java e fare clic su Esegui come ->JUnit. Vedrai l'output come indicato di seguito:
L'output sopra mostra un risultato del test positivo 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 dichiarazioni assert. Ciò dimostra 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 fallito.