J'ai écrit un programme en C#
qui appelle MSTest
à partir de la ligne de commande. L'un des cas de test génère StackOverflowException
et provoque une rupture du processus QtAgent32
(et de mon application). Que puis-je faire pour éviter cette situation (je ne peux pas changer les tests unitaires)?MSTest - test unitaire avec StackOverflowException
Répondre
Une façon d'éviter ce genre de plantage consiste à définir la propriété legacyUnhandledExceptionPolicy dans QTAgent32.exe.config (et/ou QTAgent.exe.config en fonction de la morsure de la machine/testrun) comme mentionné here. Le texte pertinent de ce lien est: -
En tant que mesure de compatibilité temporaire, les administrateurs peuvent placer un indicateur de compatibilité dans la section du fichier de configuration de l'application. Cela provoque l'exécution du Common Language Runtime au comportement des versions 1.0 et 1.1.
Ce basculera le comportement de manutention « exception non gérée » au Net 1.1 et le processus ne plantera pas à ces exceptions.
Merci pour votre réponse. J'étais très utile. – mirt
Le problème est que vous ne pouvez pas attraper StackOverflowException
sur .NET (à partir de la version 2.0). Cela signifie probablement qu'il n'y a aucun moyen de résoudre le problème que vous avez - car le cadre de test unitaire ne peut tout simplement pas détecter l'exception.
Voir la suite connexe SO question:
Il y a quelques suggestions intéressantes sur l'autre fil - par exemple, vous pouvez créer Thread
et vérifier le FrameCount
courant pour détecter plus tôt le débordement de pile. Cependant, cela ne sera probablement pas très fiable. Donc, je crains qu'il n'y ait pas de bonne réponse ...
OK, mais lorsque j'appelle MSTest à partir de la ligne de commande (et non du code C#), lorsque ce test unitaire est en cours d'exécution, je peux simplement cliquer sur Annuler sur le message d'erreur et MSTest continuer à s'exécuter. Je ne sais pas comment faire quelque chose comme ça, mais dans le code C# – mirt
@mirt - pouvez-vous ajouter cette information supplémentaire dans la question originale? Ce sont de bons détails. –
- 1. Test de l'interface utilisateur avec MsTest
- 2. WCF MSMQ Test unitaire
- 3. MSTest passe le test unitaire, échoue lorsque d'autres tests sont exécutés
- 4. C# - Test unitaire, Mock?
- 5. Servlets de test unitaire
- 6. QT Qtestlib, Test unitaire
- 7. Partage d'un test unitaire avec plusieurs projets
- 8. Test unitaire avec un fichier d'entrée
- 9. test unitaire avec des objets simulés
- 10. C# DeploymentItem ne parvient pas à copier le fichier pour le test unitaire MSTest
- 11. Passer de MSTest à un autre environnement de test unitaire dans VS 2010
- 12. asp.net mvc nhibernate test unitaire
- 13. Test unitaire: Maven ou Eclipse?
- 14. Fonction de test unitaire asynchrone
- 15. Échec du test unitaire - Pourquoi?
- 16. propriété ViewResult.ViewName vide test unitaire
- 17. JFC tutoriel test unitaire/exemple
- 18. Test unitaire des indices Lucene
- 19. Cadre de test unitaire universel
- 20. MSTest & Silverlight Unit Tutoriels de test framework
- 21. Obtention d'arguments de ligne de commande dans un test unitaire
- 22. Crashes premier test en utilisant MSTEST avec ASP.NET MVC 1
- 23. Méthode d'initialisation de test global pour MSTest
- 24. StackOverflowException avec de grandes listes
- 25. Test de code unitaire qui appelle VirtualPathUtility.ToAbsolute
- 26. Comment faire passer un test unitaire?
- 27. classe d'affaires de conception pour test unitaire
- 28. GWT Test unitaire TDD et outillage
- 29. Scénario de test unitaire - comment le tester?
- 30. Comment injecter PersistenceContext pendant un test unitaire?
Pouvez-vous partager votre code C#? Idéalement, la même boîte de dialogue devrait apparaître à partir du code C# et je me demande si cela a quelque chose à voir avec les paramètres du processus startInfo? –