Gerardo Contijoch

Experiencias del día a día trabajando con .NET – ASP.NET, C#, ASP.NET MVC y demas…

Habilitar (y hacer funcionar) Code Coverage en Visual Studio

Posted by Gerardo Contijoch en mayo 12, 2009

Hace cerca de un mes, luego de escribir unos cuantos test sobre un código con el que estaba trabajando, se me ocurrió probar la capacidad de hacer Code Coverage (CC de ahora en adelante) desde Visual Studio. Lamentablemente lo que parecía sencillo de lograr, no lo fue. Lo primero a tener en cuenta es que el CC se configura a través de la pantalla de configuración de los Test Runs y no a nivel de Test Run. Esto implica que vamos a necesitar 2 sets de configuraciones diferentes para correr los tests con y sin CC. Para acceder a esta pantalla tenemos que ir a Test/Edit Test Run configurations/<configuracion_a_editar> y allí seleccionar la opción Code Coverage. Solo nos resta seleccionar los assemblies o proyectos a instrumentar (es decir, sobre los cuales hacer el CC) y aplicar (o guardar) los cambios.

Lo que hay que tener en cuenta ahora, es que si corremos los tests en modo debug el CC no se realiza a pesar de que lo hayamos habilitado y configurado correctamente. El CC solo tendrá efecto si los tests son corridos sin debug. Lamentablemente el warning de ésta situación (correr test en debug con CC habilitado) esta deshabilitado por defecto, lo que hace casi imposible determinar porque nuestro CC no se ejecuta. Para habilitar este warning, vamos a Tools/Options…/Tests Tools/Default Dialog Box Action y habilitamos el warning que dice ‘When starting a remote test run or a run with code coverage under the debugger:’ (en la versión en inglés, por supuesto). A partir de ahora si tenemos CC habilitado y queremos correr los tests en modo debug, una advertencia nos recordará sobre la deshabilitación temporal del CC.

Es increíble como algo tan sencillo es tan difícil de lograr en Visual Studio. No hay ningún menú dedicado al CC y en el menú Test no figura ninguna opción sobre esto (existe la posibilidad de abrir la ventana Code Coverage, pero nada mas). La ventana Test Runs tampoco posee ningún botón que nos permita habilitar/deshabilitar el CC (solo uno que nos permite ver los resultados). Tampoco hay ninguna opción en la ventana Code Coverage (yo esperaría habilitarlo o deshabilitarlo desde ahí mismo). En el toolbar Test Tools hay dos opciones relacionadas a CC, pero están deshabilitadas si no hubo CC (solo nos permiten navegar el código analizado). En la ventana Test Results hay 3 opciones para correr los tests (6 si contamos también las opciones de modo debug), pero ninguna que contemple el CC. Lo peor de todo es que una vez que encontramos como habilitarlo, la decisión de ocultar el warning hace que sea muy frustrante tratar de hacer funcionar el CC (yo estuve cerca de una hora sin ningún resultado). ¿Acaso tan difícil era agregar un botón a la ventana Test Runs que habilite o deshabilite el CC? ¿Porqué se tiene que habilitar a nivel de configuración general (lo cual en realidad no esta mal) y no dentro de cada Test Run?

Por cierto… ¿Para cuándo un CoverageExcludeAttribute como en NCover? (soluciones como el uso de DebuggerNonUserCodeAttribute y DebuggerHiddenAttribute no son aceptables)

La verdad, a mi parecer, es un desastre la manera en que esta implementado el acceso al CC en Visual Studio.

¡Nos vemos en el próximo post!

Referencias:

Publicado originalmente en https://gerardocontijoch.wordpress.com.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: