76 votes

affirmer vs JUnit Affirmations

Aujourd'hui j'ai vu un cas de test JUnit avec un java affirmation de la place de la JUnit affirmations - Quelles sont les meilleures pratiques à cet égard?

90voto

Yishai Points 42417

Dans JUnit4 l'exception (en fait d'Erreur) jeté par un JUnit affirmer, c'est est la même erreur renvoyé par la java assert mot-clé (AssertionError), donc c'est exactement la même que assertTrue et d'autre que la trace de la pile, vous ne pouviez pas faire la différence.

Cela étant dit, affirme avoir à exécuter avec un drapeau spécial dans la JVM, causant de nombreux test pour apparaître passer juste parce que quelqu'un a oublié de configurer le système avec le drapeau lors de la JUnit tests ont été exécutés - pas bon.

En général, à cause de cela, je dirais que l'utilisation de JUnit assertTrue est la meilleure pratique, car il est garant de l'exécution du test, assure la cohérence (vous utilisez parfois assertThat ou d'autres assertions qui ne sont pas d'un mot-clé java) et si le comportement de JUnit affirme ce qui devrait changer dans le futur (comme d'accrochage dans une sorte de filtre ou d'un autre avenir JUnit) votre code sera en mesure de tirer parti de cela.

Le but réel de l'affirmer mot-clé dans java est d'être en mesure de l'éteindre sans exécution de la peine. Ça ne s'applique pas pour les tests unitaires.

26voto

Adamski Points 29884

Je préfère JUnit affirmations car ils offrent une plus riche de l'API que dans le haut- assert déclaration et, plus important encore, n'ont pas besoin d'être explicitement activé contrairement à assert, ce qui nécessite l' -ea argument JVM.

19voto

irreputable Points 25577

lorsque Java n'avait pas assert, les gens râlé et gémit et demande avec insistance Soleil en l'ajoutant.

une fois Java, personne ne l'utilise.

18voto

starmer Points 351

Lorsqu'un test échoue, vous obtenez plus d'informations.

assertEquals(1, 2); résultats en java.lang.AssertionError: expected:<1> but was:<2>

vs

assert(1 == 2); résultats en java.lang.AssertionError

vous pouvez obtenir encore plus d'informations si vous ajoutez l'argument de message d' assertEquals

7voto

Je dirais utiliser JUnit affirme, dans des cas de test, et l'utilisation de java affirmer dans le code. En d'autres termes, le code réel, n'auront jamais JUnit dépendances, comme une évidence, et si c'est un test, il doit utiliser JUnit variations de lui, jamais l'affirmer.

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