Je fais des tests unitaires.
J'essaie de tester une fonction.
Je l'appelle depuis mon composant de test. Mais si la fonction distante ne peut pas gérer l'exception, mon composant de testeur recevra également une exception, je suppose.
Dois-je donc m'inquiéter d'obtenir une exception dans mon composant de testeur?
Merci.
ÉDITER:
PS:
Lancer une erreur est une bonne chose, mais uniquement pour d'autres fonctions, pas pour les utilisateurs finaux jusqu'à ce que ce soit une dernière option!
OMG j'ai écrit un devis de programmation !!
Réponses:
Réponse courte: NON.
N'attrapez pas d'exceptions dans les tests unitaires. Vous effectuez des tests unitaires pour rechercher des erreurs et des situations dans lesquelles des exceptions sont déclenchées.
Le cadre de test unitaire doit gérer les exceptions de manière sensée. La plupart (sinon la totalité) des frameworks xUnit ont une construction pour s'attendre à certaines exceptions que vous utilisez lorsque vous souhaitez induire une condition d'exception particulière dans le système testé et avoir une réussite de test si l'exception attendue est déclenchée mais échoue si ce n'est pas le cas.
la source
(Contrairement à la réponse de mcottle) Réponse longue: NON ... la plupart du temps
Lorsque vous dites que vous vous attendez à ce qu'un test déclenche une exception particulière, vous saurez quand N'IMPORTE QUELLE ligne de ce test déclenche cette exception particulière.
Ce n'est pas tout à fait la même chose que de savoir que la méthode testée lève l'exception.
Si votre test implique la mise en place d'un objet ou d'un contexte (dans le test, pas dans la version de votre framework
SetUp
), vous feriez peut-être mieux d'encapsuler la seule ligne que vous souhaitez réellement tester dans un try / catch, éventuellement avec une aide.Par exemple,
puis
Si ce test échoue, je sais que ma méthode en cours de test a levé l'exception, et pas quelque chose dans la configuration aléatoire.
(Vous devriez essayer d'éviter les choses de configuration aléatoire. Parfois, il est plus facile d'avoir du code de configuration dans le test.)
la source
En général, vous devez simplement laisser l'exception, et le cadre de test vous donnera un bon rapport avec toutes les informations dont vous avez besoin.
Mais dans la méthodologie TDD, nous devons suivre ces étapes:
Lorsque vous laissez sortir une exception, si l'erreur est claire, alors ça va. Mais parfois, l'exception est obscure, voire erronée. Comment pourriez-vous laisser cela figurer dans votre code (pour vous plus tard, lorsque vous aurez oublié, ou pour un membre de l'équipe qui perdra beaucoup de temps à résoudre le problème)? Donc ma politique est: " S'il est nécessaire de clarifier un échec, vous devez attraper l'exception ".
la source