Escribí el programa en C#
que invoca MSTest
desde la línea de comandos. Uno de los casos de prueba arroja StackOverflowException
y causa que el proceso QtAgent32
(y mi aplicación) se rompa. ¿Qué puedo hacer para evitar esta situación (no puedo cambiar las pruebas de unidad)?MSTest - prueba de unidad con StackOverflowException
Respuesta
Una forma de evitar este tipo de bloqueos es establecer la propiedad legacyUnhandledExceptionPolicy en QTAgent32.exe.config (y/o QTAgent.exe.config dependiendo de la bitness de la máquina/testrun) como se menciona here. El texto relevante de este enlace es: -
Como medida de compatibilidad temporal, los administradores pueden colocar un marcador de compatibilidad en la sección del archivo de configuración de la aplicación. Esto hace que el tiempo de ejecución del lenguaje común vuelva al comportamiento de las versiones 1.0 y 1.1.
Esto cambiará la "excepción no controlada" manipulará a .NET 1.1 y el proceso no se colgará en tales excepciones.
Gracias por su respuesta. Yo fui muy útil. – mirt
El problema es que no se puede capturar StackOverflowException
en .NET (comenzando con la versión 2.0). Esto probablemente significa que no hay forma de resolver el problema que tiene, porque el marco de prueba de la unidad simplemente no puede detectar la excepción.
Véase la siguiente información, relacionada SO pregunta:
Hay algunas sugerencias interesantes sobre el otro hilo - por ejemplo, puede crear Thread
y comprobar la corriente FrameCount
para detectar el desbordamiento de pila antes. Sin embargo, eso probablemente no será muy confiable. Por lo tanto, me temo que no hay una buena respuesta ...
OK, pero cuando invoco MSTest desde la línea de comandos (no desde el código C#), cuando esta prueba de unidad se está ejecutando puedo simplemente hacer clic en cancelar en el cuadro de mensaje de error y MSTest continuará ejecutándose. No sé cómo hacer algo como esto, pero en el código de C# – mirt
@mirt, ¿puedes agregar esa información adicional a la pregunta original? Esos son buenos detalles. –
- 1. comprobar la salida en la prueba de la unidad MSTest
- 2. Prueba de unidad IList con CollectionAssert
- 3. Repita la prueba de prueba mstest varias veces
- 4. Cómo probar atributos de la unidad con MsTest usando C#?
- 5. Prueba automatizada de la unidad Silverlight con CruiseControl.NET
- 6. StackOverflowException
- 7. ¿Cómo se pueden usar archivos de configuración "externos" (es decir, con configSource) con un proyecto de prueba de unidad MSTest?
- 8. C# DeploymentItem no puede copiar el archivo para la prueba de unidad MSTest
- 9. Errores de ejecución de prueba con MSTest en VS2010
- 10. MSTest: cómo aumentar el tiempo de prueba
- 11. Programado el tiempo de espera de una prueba en MSTest
- 12. ¿Es posible tener ClassCleanup determinista en la prueba de unidad MSTest/VS?
- 13. Prueba de unidad CacheManager
- 14. Unidad de prueba de Android con Maven
- 15. Usando MSTest con F #
- 16. (Unidad) Prueba de ArrayAdapter
- 17. Cómo ejecutar una prueba única de MSTEST
- 18. Prueba de unidad ASP.NET WebApi con Request.CreateResponse
- 19. Prueba de unidad con una biblioteca estática
- 20. Unidad de prueba EJB
- 21. Usando MSTest con CruiseControl.NET
- 22. unidad que prueba una unidad de trabajo
- 23. Prueba basada en datos en MSTest - problema con TestContext.DataRow
- 24. ¿Cómo identifica Visual Studio/mstest los proyectos de prueba?
- 25. Eliminar prueba :: unidad
- 26. MSTEST PrincipalPermission
- 27. StackOverflowException de inicialización lista grande
- 28. Prueba de Unidad de Curado
- 29. Herencia de prueba de unidad
- 30. Sockets de prueba de unidad
¿Puedes compartir tu código C#? Idealmente, el mismo cuadro de diálogo debería aparecer también desde el código C# y me pregunto si tiene algo que ver con los parámetros de startInfo del proceso. –