Quelle est la différence entre l'échec et l'erreur dans JUnit?
Je suis en cours d'exécution JUnit tests sur une grande base de code, et j'ai réalisé que j'obtiens parfois des "Erreurs", tandis que d'autres fois je reçois des "Échecs". Quelle est la différence?
Vous devez vous connecter pour publier un commentaire.
Ok, je viens de remarqué un modèle et pense que j'ai compris (corrigez-moi si je me trompe). Il me semble que les échecs sont quand vos cas de test fail - c'est à dire vos affirmations sont erronées. Les erreurs sont des erreurs qui se produisent lors de la tentative pour exécuter le test - des exceptions, etc.
java.lang.AssertionError
est levée, il sera affiché comme un échec de test à la place d'un test d'erreur. Vous devriez envisager d'accepter votre propre réponse, car il est correct.@Test
avecexpected = SomeException.class
.Si votre test déclenche une exception qui n'obtient pas propagée à travers l'Affirmation cadre de Junit, il est rapporté comme une erreur. Par exemple, un NullPointer, ou un ClassNotFound exception signaler une erreur:
ou,
Ayant dit que, le suivant sera un échec:
ou,
ou encore:
Il dépend de la Junit version que vous utilisez. Junit 4 - permettra de faire la distinction entre un échec et une erreur, mais Junit 4 simplifie comme des échecs.
Lien suivant fournit plus d'informations intéressantes:
http://www.devx.com/Java/Article/31983/1763/page/2
De "Pragmatique de Tests Unitaires en Java 8 avec JUnit":
Assertions (ou affirme) dans JUnit sont statiques appels de méthode que vous déposez dans
vos tests. Chaque affirmation est une occasion de vérifier que certaines conditions
vrai. Si une prétendue condition n'est pas satisfaite, le test s'arrête juste
il y a, et JUnit signale un échec de test.
(Il est également possible que lorsque JUnit exécute votre test, une exception est levée et
pas pris. Dans ce cas, JUnit signale une erreur de test.)
Test ci-dessous explique la différence entre Erreur de Test vs échec du Test de la.
J'ai commenté la ligne qui lance le test de l'erreur et de l'échec du test.
Donc Junit test montre d'erreur à chaque fois que vous obtenez une exception , et l'échec du test lorsque le résultat escompté de la valeur ne correspond pas à votre valeur
Source de la classe : JUnitReportReporter.java
Comme vous pouvez le voir en dessous de la ligne dans la méthode ci-dessus
le nombre d'erreurs est accrue lorsqu'il est en instance de AssertionError autrement(tout Throwable) est compté comme des échecs.
Vous avez raison que les échecs proviennent de la AssertionErrors jeté par la JUnit méthodes d'assertion, ou en jetant un AssertionError, ou par la levée d'une exception que vous avez déclaré dans votre annotation @Test, et les Erreurs viennent d'autres, exception inattendue. Mais il y a une importante distinction entre eux:
Un échec signifie que votre test a correctement, et a identifié un défaut dans votre code.
Une erreur pourrait signifier un bug dans votre code, mais que vous n'avez pas encore de test pour. Cela pourrait également signifier que le bug est dans le test lui-même.
En bref, un échec signifie que vous avez besoin de réécrire le code qui est en train d'être testé. Une erreur signifie qu'il peut être l'unité de test que vous avez besoin de réécrire. Il peut signifier, même si l'échec était dans votre code, comme un NullPointerException, parce que vous avez détecté un défaut que vous n'avez pas encore de test pour, il pourrait être sage de test pour que.