visual-studio-2008 - instalar - visual studio code
¿Por qué Visual Studio no interrumpe las excepciones al depurar pruebas unitarias? (7)
De forma predeterminada, incluso si realiza una compilación de depuración, MSTest no le brinda depuración (con puntos de ruptura, etc.), a menos que realmente le indique "Depurar pruebas de unidad" explícitamente.
Debería interrumpirse en las excepciones no controladas en la prueba de la unidad, siempre que esté en una configuración de depuración, y comience la prueba de la unidad utilizando "Depurar", es decir: utilizando Ctrl+R, Ctrl+A
lugar de Ctrl+R, A
para ejecutar todas las pruebas . En la ventana de prueba, hay un menú "Ejecutar" y un menú "Depurar" con las opciones.
Cuando intento depurar una prueba de unidad que falla debido a una excepción no manejada en mi código, espero que Visual Studio rompa la excepción no manejada para poder inspeccionar el código y aislar el problema. En su lugar, el IDE sale instantáneamente del modo de depuración y la prueba aparece como "Fallida", lo que me permite consultar el seguimiento de la pila del resultado de la prueba para encontrar el problema.
He confirmado que el IDE está configurado para interrumpirse cuando se lanza una excepción CLR no manejada por el usuario. Solo puedo obtener el comportamiento esperado si configuro el IDE para interrumpir todas las excepciones lanzadas. Esto, por supuesto, hace que la depuración normal de un PITA.
¿Estoy fuera de suerte?
El marco de pruebas de unidad maneja la excepción, por lo que Visual Studio piensa que la excepción se maneja.
Esto hizo el truco para mí:
Ctrl + Alt + E para el menú Excepciones -> Presione Reset All
Vaya a: Herramientas -> Opciones -> Depuración -> General: debe asegurarse de que "Habilitar solo mi código" y "Habilitar el asistente de excepciones" estén marcados.
Esto se debe al hecho de que las pruebas se ejecutan utilizando MSTest (con Visual Studio utilizado simplemente como shell). MSTest enmascarará estas excepciones que se lanzan y nunca llegarán a Visual Studio. Si ejecuta las pruebas en modo de depuración, debería funcionar.
Si hace clic con el botón derecho en la (s) prueba (s) en la Vista de prueba y elige depurarlas, debería ejecutar el código a través del IDE y las excepciones deberían romperse de manera apropiada.
Instale Testdriven.NET y use "Probar con -> Depurador".
La razón por la cual es que sus excepciones no son desatendidas. El marco de prueba de unidad está manejando las excepciones bajo el capó y convirtiéndolas en fallas.
Lo que necesitas hacer en cambio es romper las excepciones lanzadas. Si combina esto con la habilitación de "Sólo mi código" (activado de forma predeterminada), debe obtener el comportamiento que espera. Visual Studio solo se interrumpirá cuando se produzcan excepciones generadas por su código.
Para mí, vaya a: Herramientas, Opciones, Depuración, General: necesita asegurarse de que "Habilitar solo mi código" y "Habilitar el asistente de excepciones" estén marcados.