82 votes

Peut-on spécifier un message avec l'instruction assert de Java?

Il semble que ce serait utile d'avoir l'assertion afficher un message lorsqu'une assertion échoue.

Actuellement, une AssertionError est lancée, pouvez-vous spécifier un message personnalisé pour celle-ci ?

Pouvez-vous montrer un exemple de mécanisme pour faire cela (autre que de créer votre propre type d'exception et de le jeter) ?

166voto

Greg Hewgill Points 356191

Vous pouvez certainement le faire:

assert x > 0 : "x doit être supérieur à zéro, mais x = " + x;

Voir Programmation avec les assertions pour plus d'informations.

21voto

matt burns Points 6072
assert (condition) : "message quelconque";

Je recommanderais de mettre la condition entre parenthèses

assert (y > x): "y est trop petit. y = " + y;

Imaginez si vous tombiez sur un code comme celui-ci...

assert isTrue() ? true : false : "message quelconque";

N'oubliez pas que cela n'a rien à voir avec les assertions que vous écririez dans JUnit.

3 votes

Il n'y a aucun intérêt à envelopper chaque expression entre crochets juste parce qu'un ternaire serait autrement légèrement confus. Si vous avez une expression ternaire comme votre assertion, vous pouvez l'envelopper. (Bien que je ferais valoir que si vous avez une expression ternaire comme votre assertion, vous avez probablement commis une erreur et au moins vous devriez extraire l'expression dans un appel de méthode nommée pour plus de clarté.)

12voto

Jason Coco Points 52303

Cela le fait absolument:

assert importantVar != null : "La variable importante était nulle!";

Cela ajoutera "La variable importante était nulle" à l'exception qui est déclenchée.

7voto

Bill the Lizard Points 147311

Si vous utilisez

assert Expression1 : Expression2 ;

Expression2 est utilisé comme message de détail pour l'AssertionError.

0 votes

Simplement en ajoutant que AssertionError est déclenché si Expression1 est fausse.

1voto

Powerlord Points 43989

En passant, JUnit vous offre tout un ensemble de nouvelles fonctions d'assertion. Bien sûr, elles sont destinées à être utilisées dans les tests unitaires...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X