0

Peut-être que quelqu'un est capable de m'expliquer pourquoi j'ai des exceptions non gérées lors des tests unitaires? Est-ce que l'environnement n'est pas censé gérer toutes les exceptions et juste mettre le test à l'échec?Pourquoi Visual Studio casse-t-il sur une exception non gérée exécutant des tests unitaires?

Cela peut être lié au fait que les tests unitaires appellent du code non géré via C++/CLI?

Merci d'avance.

EDIT: Juste pour clarifier, le problème n'est pas d'avoir une exception. Le problème est l'exception qui n'entraîne pas l'échec du test unitaire et l'exécution du prochain test unitaire.

alt text

Répondre

1

Il n'y a rien aussi méchant comme une exception AccessViolation, ne StackOverflow est pire. Je peux distinguer la "communication", ce code non géré s'exécute probablement dans un thread que ni le CLR ni le coureur de test ne connaît. Des options très limitées là-bas, aucun moyen de faire un fil comme celui-ci saisissent simplement pour exister.

C'est un problème de corruption de mémoire, l'allocateur de débogage dans le CRT remplit les blocs libérés de la mémoire avec 0xfeeefeee. Ce n'est pas kosher btw, vous devriez seulement exécuter des tests unitaires sur la version Release.

+0

Mmmmm, dans cette situation vous êtes rigth, l'exception a été générée dans un thread créé à partir de code non géré (en utilisant la bibliothèque ACE). Donc, dans ce scénario, c'est le comportement attendu? Un moyen de le changer? Merci beaucoup. (Le bug est connu et il est corrigé, mais le correctif n'a pas encore été publié, donc j'ai besoin de lancer l'UT avec ce bug pendant un moment). –

+0

Bon pour moi rigth de temps en temps. Oui, attendu, ne peut pas faire disparaître ce fil. En deçà de l'exécution de tests unitaires sur du code construit Debug, le faire fonctionner sur des bogues connus et corrigés n'a pas beaucoup de sens non plus. Qu'est-ce que tu fais? Vous connaissez le bug, vous connaissez le correctif, pourquoi voudriez-vous prouver que le bug existait il y a une semaine? Un certain sens du pragmatisme est justifié ici. Si vous avez trouvé le correctif, arrêtez de vous prouver que vous êtes cool, ce n'est pas productif. –

+0

La vie n'est pas aussi facile que vous le pensez, nous faisons des tests unitaires sur les livrables que nous donnons. Nous ne corrigeons pas tous les bugs que nous trouvons (du moins pas immédiatement) car la correction d'un bug dans une zone de faible priorité pourrait créer un bug dans une zone hautement prioritaire (nous parlons de logiciels médicaux). Je dirais que ce n'est pas une bonne idée de prendre pour des imbéciles d'autres quand vous manquez beaucoup d'informations. Merci quand même pour votre aide. –

Questions connexes