Comment utiliser au mieux les assertions en Java?

Cet article vous présente Assertions In Java, un concept simple mais important et le suit avec une démonstration programmatique.

Cet article vous présente les assertions dans un concept simple mais important et suivi par une démonstration programmatique. Les pointeurs suivants seront traités dans cet article,



Alors commençons,



Vous voulez tester si une hypothèse est correcte dans votre programme? Eh bien, vous pouvez le faire avec des déclarations d'assertion en Java. Vous pouvez utiliser le mot clé assert pour créer des assertions qui vous permettent de tester vos hypothèses dans un programme.

Prenons un exemple. Un salarié d'une entreprise ABC ne peut pas avoir un âge négatif. Vous pouvez utiliser une assertion à cet effet pour vous assurer que l’âge d’un employé n’est pas un nombre négatif.



Prenons un autre exemple. Si votre méthode calcule la vitesse d'une particule, alors votre hypothèse est que la vitesse de la particule est inférieure à la vitesse de la lumière. Donc, pour tester cette hypothèse, vous pouvez utiliser des instructions d'assertion en Java.

La syntaxe

Il existe deux formes de déclaration d'assertion:



assertexpression1

Ici,

expression 1 est une expression booléenne.

assert expression1: expression2

Sous cette forme, l'expression 1 est une expression booléenne et l'expression 2 a une valeur qui sera comparée à expression1.

qu'est-ce que le cours de science des données

Maintenant, vous pourriez demander - quelle forme choisissez-vous pour vos programmes? Vous pouvez utiliser le deuxième formulaire lorsque votre programme contient des informations supplémentaires susceptibles de vous aider à diagnostiquer les erreurs ou les échecs du programme.

Avant java 1.4, vous auriez pu utiliser le mot-clé «assert» pour nommer vos variables, méthodes, fonctions et bien plus encore. Avec les nouvelles versions de la JVM, cela peut potentiellement provoquer un conflit de noms - vous devez donc être un peu conscient de ce fait.

Continuez avec cet article sur les assertions en Java

Pourquoi avez-vous besoin d'assertions?

Vous pourriez penser qu'une instruction d'assertion en Java peut être inutile. Vous pourriez trouver cela inutile pour les petits programmes. Mais, lorsqu'il s'agit de grands programmes avec une logique complexe, ces déclarations d'assertion sont utiles.

L'utilisation principale des instructions d'assertion est le débogage et les tests. En cas d'échec de l'instruction d'assertion, la machine virtuelle Java lèvera une erreur étiquetée comme AssertionError. Comme vous pouvez le voir, cela offre un moyen efficace de détecter et de corriger les erreurs dans un programme.

En plus du débogage et des tests, l'instruction d'assertion rend votre code plus lisible. Prenons un exemple:

Le code ci-dessous nous aidera à vérifier certaines conditions qui peuvent empêcher l'application de fonctionner correctement.

Connexion conn = getConnection () if (conn == null) {throw new RuntimeException ('Connection is null')}

Avec une seule instruction d'assertion, vous pouvez essentiellement supprimer l'instruction «if and throw» comme indiqué ci-dessous:

Connexion conn = getConnection () assert conn! = Null

Continuez avec cet article sur les assertions en Java

Activation et désactivation des assertions Java

Comme les assertions Java utilisent le mot clé assert, vous n'avez pas besoin d'importer de packages ou de bibliothèques. Comme mentionné précédemment, vous pouvez utiliser le mot clé assert pour les variables, méthodes et fonctions. Pour une compatibilité descendante, et afin d'éviter un éventuel conflit de dénomination, la JVM désactive la validation d'assertion par défaut. Les assertions doivent être activées explicitement. Vous pouvez le faire avec un argument de ligne de commande (-enableassertions) ou en utilisant son raccourci (-ea).

Prenons quelques exemples:

java -ea com.baeldung.assertion.Assertion

Ce qui précède active l'assertion pour les classes.

java -ea: com.baeldung.assertion… com.baeldung.assertion.Assertion

Vous pouvez également activer les assertions pour des packages et des classes particuliers. Ceci est illustré dans l'exemple ci-dessus où nous avons activé les assertions pour les classes du package com.baeldung.assertion.

Maintenant que nous avons appris à activer les assertions, voyons comment nous pouvons les désactiver. Tout comme l'activation des assertions, la désactivation peut être effectuée en utilisant un argument de ligne de commande (-disableassertions) ou son raccourci (-da) pour des packages et des classes spécifiques.

python def __init__

Continuez avec cet article sur les assertions en Java

Comment utiliser les assertions Java?

Il y a deux choses dont vous avez besoin pour implémenter les assertions dans votre programme: le mot-clé assert et une condition booléenne. Prenons un exemple avec un extrait de code:

public void setup () {Connexion conn = getConnection () assert conn! = null}

Vous pouvez également utiliser une chaîne pour les assertions ci-dessus, comme indiqué ci-dessous:

public void setup () {Connexion conn = getConnection () assert conn! = null: 'La connexion est nulle'}

Dans l'extrait de code ci-dessus, s'il existe une AssertionError, la chaîne sera utilisée pour construire l'erreur.

Dans les deux cas ci-dessus, le code vérifie si la connexion à une source externe renvoie une valeur non nulle. Si la valeur est nulle, la machine virtuelle Java lèvera automatiquement une AssertionError.

Dans le deuxième exemple, la chaîne que nous avons utilisée apparaît dans la trace de la pile lorsqu'il y a une AssertionError. Ces informations supplémentaires seront utiles lorsque vous tentez de déboguer le programme. Ces messages détaillés vous aideront à corriger une erreur qui aurait provoqué l'échec de l'assertion. Ainsi, lorsque vous exécutez la classe avec les assertions activées, le résultat sera similaire à celui ci-dessous:

Exception dans le thread «principal» java.lang.AssertionError: La connexion est nulle
à com.baeldung.assertion.Assertion.setup (Assertion.java:15)
à com.baeldung.assertion.Assertion.main (Assertion.java:10)

Prenons un exemple simple:

import java.util.Scanner class AssertionExample {public static void main (String args []) {Scanner scanner = new Scanner (System.in) System.out.print ('Enter your age') int value = scanner.nextInt () assert value> = 18: 'Non valide' System.out.println ('value is' + value)}}

Maintenant que vous avez le code en main, il est temps de l'exécuter. Puisque les assertions sont désactivées par défaut, vous devrez les activer.

Vous pouvez compiler le code ci-dessus avec ce qui suit: javac AssertionExample.java

Vous pouvez ensuite l'exécuter en utilisant ce qui suit: java -ea AssertionExample

différence entre final et finaliser

La production pour le code ci-dessus est:

Entrez votre âge 11

Exception dans le thread «principal» java.lang.AssertionError: Non valide

Comme vous pouvez le voir, nous avons donné 11 comme valeur pour l'âge. Le programme ne le traite pas comme une valeur légitime. Ainsi, vous verrez une AssertionError.

Continuez avec cet article sur les assertions en Java

Où ne pas utiliser l'assertion?

S'il est bon d'avoir des assertions dans des situations qui incluent des invariants internes, des invariants de flux de contrôle, des préconditions, des postconditions et des invariants de classe, il existe certaines situations où les assertions ne doivent pas être utilisées.

Explorons-en plus à ce sujet:

Pour la vérification des arguments dans les méthodes publiques

Vous devez comprendre que la vérification des arguments fait partie des spécifications publiées ou des contrats d'une méthode. Ceux-ci doivent être suivis indépendamment du fait que les assertions soient activées ou non.

Continuez avec cet article sur les assertions en Java

Utilisation d'assertions pour les opérations

Par défaut, les assertions sont désactivées. Votre programme ne doit pas supposer que l'expression booléenne dans une instruction d'assertion sera toujours évaluée.

Prenons un exemple de la façon dont cela pourrait affecter votre programme. Disons que vous souhaitez supprimer tous les éléments nuls d'une liste de noms et que vous savez que votre liste contient des éléments nuls.

assert names.remove (null)

L'extrait de code ci-dessus fonctionnerait si les assertions étaient activées. Mais, cela échouerait si les assertions étaient désactivées car le code ne supprimera aucun élément nul. Pour résoudre ce problème, vous pouvez utiliser l'extrait de code ci-dessous dans votre programme:

boolean nullsRemoved = names.remove (null)
assert nullsRemoved

L'extrait de code ci-dessus supprimera les valeurs nulles, même si les assertions ont été désactivées.

Maintenant, après avoir exécuté le programme Java ci-dessus, vous auriez compris «Assertions in Java». Nous sommes donc arrivés à la fin de cet article sur «Quicksort in Java». Si vous souhaitez en savoir plus,Vérifiez par Edureka, une entreprise d'apprentissage en ligne de confiance. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.