Junit Assert & AssertEquals avec l'exemple
Qu’est-ce que Junit Assert ?
Assert est une méthode utile pour déterminer le statut de réussite ou d'échec d'un scénario de test. Les méthodes d'assertion sont fournies par la classe org.junit.Assert qui étend la classe java.lang.Object.
Il existe différents types d'assertions comme booléennes, nulles, identiques, etc.
Junit fournit une classe nommée Assert, qui fournit un ensemble de méthodes d'assertion utiles pour rédiger des cas de test et détecter les échecs de test.
Les méthodes assert sont fournies par la classe org.junit.Assert qui s'étend java.lang.Object classe.
JUnit Méthodes d'assertion
Boolean
Si vous souhaitez tester les conditions booléennes (vrai ou faux), vous pouvez utiliser les méthodes d'assertion suivantes
- assertTrue (condition)
- assertFalse (condition)
Ici, la condition est une valeur booléenne.
Objet nul
Si vous souhaitez vérifier la valeur initiale d'un objet/variable, vous disposez des méthodes suivantes :
- assertNull (objet)
- assertNotNull (objet)
Ici l'objet est Java objet par exemple assertNull (réel);
Identique
Si vous souhaitez vérifier si les objets sont identiques (c'est-à-dire comparer deux références au même objet Java) ou différents.
- assertSame (attendu, réel), Il retournera vrai si attendu == réel
- assertNotSame (attendu, réel)
Affirmer est égal
Si vous souhaitez tester l'égalité de deux objets, vous disposez des méthodes suivantes
- assertEquals (attendu, réel)
Il retournera vrai si : attendu.equals (réel) renvoie vrai.
Affirmer que le tableau est égal
Si vous souhaitez tester l'égalité des tableaux, vous disposez des méthodes suivantes comme indiqué ci-dessous :
- assertArrayEquals (attendu, réel)
La méthode ci-dessus doit être utilisée si les tableaux ont la même longueur, pour chaque valeur valide pour i, vous pouvez le vérifier comme indiqué ci-dessous :
- assertEquals (attendu[i], réel[i])
- assertArrayEquals (attendu[i], réel[i])
Message d'échec
Si vous souhaitez générer une erreur d'assertion, vous avez échouer() cela aboutit toujours à un verdict d’échec.
- Échec(message);
Vous pouvez avoir une méthode d'assertion avec un supplément Chaîne paramètre comme premier paramètre. Cette chaîne sera ajoutée au message d'échec si l'assertion échoue. Par exemple échouer (message) peut s'écrire
- assertEquals (message, attendu, réel)
JUnit affirmerÉgal
Vous avez assertEquals(a,b) qui s'appuie sur la équivaut à () méthode de la classe Object.
- Ici, il sera évalué comme a.equals( b ).
- Ici, la classe testée est utilisée pour déterminer une relation d’égalité appropriée.
- Si une classe ne remplace pas le équivaut à () méthode de Exlcusion classe, il obtiendra le comportement par défaut de équivaut à () méthode, c'est-à-dire l'identité de l'objet.
If a et b sont des primitifs tels que octet, int, booléen, etc. alors ce qui suit sera fait pour assertEquals(a,b) :
a et b seront convertis en leur type d'objet wrapper équivalent (Octet,Entier, Boolean, etc.), puis a.égal( b ) sera évalué.
Par exemple : considérons les chaînes mentionnées ci-dessous ayant les mêmes valeurs, testons-les en utilisant assertTrue
String obj1="Junit"; String obj2="Junit"; assertEquals(obj1,obj2);
L'instruction assert ci-dessus retournera vrai car obj1.equals(obj2) renvoie vrai.
Assertions à virgule flottante
Lorsque vous souhaitez comparer des types à virgule flottante (par exemple double or flotter), vous avez besoin d'un paramètre obligatoire supplémentaire delta pour éviter les problèmes d'erreurs d'arrondi lors des comparaisons en virgule flottante.
L'assertion s'évalue comme indiqué ci-dessous :
- Math.abs (attendu – réel) <= delta
Par exemple :
assertEquals( unDoubleLa valeur, une autreDoubleValeur, 0.001 )
JUnit Exemple d'affirmation
L'exemple ci-dessous montre comment affirmer une condition en utilisant JUnit affirmer des méthodes.
Créons une classe de test simple nommée Junit4AssertionTest.java et une classe de testeurs TestRunner.java.
Vous créerez quelques variables et instructions d'assertion importantes dans JUnit.
Dans cet exemple, vous exécuterez notre classe de test en utilisant TestRunner.java
Étape 1) Créons une classe couvrant toutes les méthodes d'instruction assert importantes dans 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); } }
Étape 2) Vous devez créer une classe d'exécuteur de tests pour exécuter la classe ci-dessus :
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()); } }
Étape 3) Analysons le résultat attendu étape par étape :
Considérez toutes les déclarations assert une par une :
- assertEquals(chaîne1,chaîne2);
Comparez maintenant string1 = « Junit » avec string2 = « Junit » avec la méthode égale de la classe d'objet. Remplacement de la méthode assertEquals par la méthode java.lang.Object.equals() :
string1.equals(string2)=> renvoie vrai
Donc assertEquals(string1,string2) reviendra oui.
- assertSame(chaîne3, chaîne4);
La fonctionnalité « assertSame() » consiste à vérifier que les deux objets font référence au même objet.
Puisque string3="test" et string4="test" signifient que string3 et string4 sont du même type, assertSame(string3, string4) reviendra oui.
- assertNotSame(chaîne1, chaîne3);
La fonctionnalité « assertNotSame() » consiste à vérifier que les deux objets ne font pas référence au même objet.
Puisque string1=”Junit” et string3=”test” signifient que string1 et string3 sont de types différents, donc assertNotSame(string1, string3) retournera oui.
- assertNotNull(string1);
La fonctionnalité « assertNotNull() » consiste à vérifier qu'un objet n'est pas nul.
Puisque string1= « Junit » qui est une valeur non nulle, assertNotNull(string1) reviendra oui.
- assertNull(string5);
La fonctionnalité « assertNull() » consiste à vérifier qu'un objet est nul.
Puisque string5= null qui est une valeur nulle, assertNull(string5) reviendra oui.
- assertTrue(variable1
La fonctionnalité « assertTrue() » consiste à vérifier qu'une condition est vraie.
Puisque variable1=1 et variable2=2, ce qui montre que variable1 oui.
- assertArrayEquals(airethematicArrary1, airethematicArrary2);
La fonctionnalité « assertArrayEquals() » consiste à vérifier que le tableau attendu et le tableau résultant sont égaux. Le type de tableau peut être int, long, short, char, byte ou java.lang.Object.
Puisque airethematicArrary1 = { 1, 2, 3 } et airethematicArrary2 = { 1, 2, 3 } qui montre que les deux tableaux sont égaux, assertArrayEquals(airethematicArrary1, airethematicArrary2) reviendra oui
Puisque tous les sept affirment des déclarations de Junit4AssertionTest.java class renvoie true, donc lorsque vous exécutez la classe test assert, elle renverra un test réussi. (voir la sortie ci-dessous)
Étape 4) Faites un clic droit sur Junit4AssertionTest.java et cliquez sur runAs->JUnit. Vous verrez le résultat comme indiqué ci-dessous :
La sortie ci-dessus montre un résultat de test réussi comme prévu.
Résumé
Dans ce didacticiel, vous avez appris tous les types importants de méthodes d'assertion fournies par JUnit. Vous avez également vu des exemples d’instructions assert. Ce qui montre que si toutes les instructions assert renvoient vrai, alors l'interface graphique de test renverra un résultat vrai et si le test unique échoue, il renverra un résultat échoué.