JUnit fournit la possibilité de suivre l'exception et également de vérifier si le code lève l'exception attendue ou non.
Junit4 fournit un moyen simple et lisible pour les tests d'exception, vous pouvez utiliser
- Paramètre facultatif (attendu) de l'annotation @test et
- Pour tracer les informations, "fail ()" peut être utilisé
Lors du test d'exception, vous devez vous assurer que la classe d'exception que vous fournissez dans ce paramètre facultatif de l' annotation @test est la même. Cela est dû au fait que vous attendez une exception de la méthode que vous utilisez pour les tests unitaires, sinon notre test JUnit échouerait.
Exemple @ Test (attendu = IllegalArgumentException.class)
En utilisant le paramètre "attendu", vous pouvez spécifier le nom d'exception que notre test peut lancer. Dans l'exemple ci-dessus, vous utilisez " IllegalArgumentException" qui sera lancé par le test si un développeur utilise un argument qui n'est pas autorisé.
Exemple utilisant @test (attendu)
Comprenons les tests d'exception en créant une classe Java avec une méthode lançant une exception. Vous allez le gérer et le tester dans une classe de test. Considérez JUnitMessage.java ayant une méthode qui effectue simplement une opération mathématique basée sur l'entrée reçue par l'utilisateur. Si un argument non autorisé est entré, il lèvera "ArithmeticException " . Voir ci-dessous:
package guru99.junit;classe publique JUnitMessage {message String privé;public JUnitMessage (message de chaîne) {this.message = message;}public void printMessage () {System.out.println (message);division int = 1/0;}public String printHiMessage () {message = "Salut!" + message;System.out.println (message);message de retour;}}
Explication du code:
- Ligne de code 7: Création d'un constructeur paramétré avec initialisation de champ.
- Code Line 11-14: Création d'une méthode pour une opération mathématique.
- Ligne de code 18: Création d'une autre méthode pour imprimer un message.
- Code Line 20: Création d'une nouvelle chaîne pour imprimer un message.
- Code Line 21: Impression du nouveau message créé à la ligne 20.
Créons une classe de test pour la classe java ci-dessus pour vérifier l'exception.
Voir ci-dessous la classe de test à l'exception de test unitaire (ArithmeticException ici) lancée à partir de la classe java ci-dessus:
AirthematicTest.java
package guru99.junit;import statique org.junit.Assert.assertEquals;import org.junit.Test;public class AirthematicTest {public String message = "Saurabh";JUnitMessage junitMessage = nouveau JUnitMessage (message);@Test (attendu = ArithmeticException.class)public void testJUnitMessage () {System.out.println ("Le message Junit est en cours d'impression");junitMessage.printMessage ();}@Testpublic void testJUnitHiMessage () {message = "Salut!" + message;System.out.println ("Le message Junit est en cours d'impression");assertEquals (message, junitMessage.printMessage ());}}
Explication du code:
- Ligne de code 13: Utilisation de l'annotation @Test pour créer notre test. Lorsque vous exécutez la méthode des classes ci-dessus, elle invoquera une opération mathématique. Ici, une exception arithmétique est attendue, vous la listez donc comme paramètre dans @Test.
- Ligne de code 17: Appel de printMessage () JUnitMessage.java
- Ligne de code 18: Création d'une autre méthode pour imprimer le message HI.
Si vous exécutez cette classe de test, la méthode de test est exécutée avec chaque paramètre défini. Dans l'exemple ci-dessus, la méthode de test est exécutée cinq fois.
Exécutons-le et vérifions le résultat. Voir ci-dessous la classe de test runner pour exécuter JunitTestExample.java
Production:
Voici la sortie qui montre le test réussi sans trace d'échec comme indiqué ci-dessous:
Résumé:
- Le test d'exception est une fonctionnalité spéciale introduite dans JUnit4. Dans ce didacticiel, vous avez appris à tester une exception dans JUnit à l'aide de @test (sauf)
- Junit fournit la possibilité de tracer l'exception et également de vérifier si le code lève une exception ou non
- Pour les tests d'exception, vous pouvez utiliser
- Paramètre facultatif (attendu) de l'annotation @test et
- Pour tracer les informations, "fail ()" peut être utilisé