web-dev-qa-db-fra.com

Groovy 'assert': Comment afficher la valeur?

Comment puis-je afficher une valeur si elle est vraie ou fausse dans groovy? J'utilise Eclipse comme IDE.

    assert 4 * ( 2 + 3 ) - 6 == 14 //integers only

Et aussi je ne comprends pas trop bien "affirmer" dans Groovy. Est-ce comme une déclaration if ()/boolean en Java?

Quel rôle assert joue-t-il dans Groovy?

16
AppSensei

Une assertion est semblable à un if, elle vérifie l'expression que vous fournissez: si l'expression est vraie, elle continue l'exécution jusqu'à l'instruction suivante (et n'imprime rien). Si l'expression est fausse, elle déclenche une AssertionError.

Vous pouvez personnaliser le message d'erreur en fournissant un message séparé par deux points, comme ceci:

assert 4 * ( 2 + 3 ) - 5 == 14 : "test failed"

qui va imprimer:

Java.lang.AssertionError: test failed. Expression: (((4 * (2 + 3)) - 5) == 14)

mais je devais changer les valeurs de votre test pour le faire échouer.

Vous pouvez utiliser des assertions à votre goût: vous pouvez les utiliser pour affirmer quelque chose qui doit être vrai avant de continuer dans votre travail (voir design by contract ).

Par exemple. une fonction nécessitant un nombre positif pour travailler peut tester le fait que l'argument est positif en effectuant une assertion en tant que première instruction:

def someFunction(n) {
    assert n > 0 : "someFunction() wants a positive number you provided $n"
    ...
}
34
user1708042

Les affirmations de Groovy sont maintenant assez impressionnantes! En fait, ils afficheront la valeur de chaque variable dans l'instruction (ce qui est fantastique pour le débogage)

par exemple, il peut imprimer quelque chose comme ceci si b est 5, a est {it ^ 2} et c est 15:

assert( a(b)  == c)
.       | |   |  |
.      25 |  !=  15
.         5

(Eh bien - quelque chose comme ça - Groovy serait probablement beaucoup mieux).

Si nous pouvions simplement obtenir ce type d’impression sur une ligne d’exception ...

9
Bill K

affirme 'affirme' que le résultat de l'expression sera un vrai

1