Solucionar problemas de cobertura de código
La herramienta de análisis de cobertura de código en Visual Studio recopila datos de código y ensamblados administrados (archivos .dll o .exe).Sin embargo, en algunos casos, la ventana de resultados de cobertura de código muestra un error similar a “los resultados vacíos generados: ….” Hay varias razones posibles por las que esto puede suceder.Este tema está diseñado para ayudar a resolver estos problemas.
Qué debe ver
Si se elige un comando de Analizar cobertura de código en el menú de pruebas y si la compilación y las pruebas se ejecutan correctamente, debe verse una lista de resultados en la ventana de cobertura de código.Es posible que tenga que expandir elementos para ver los detalles.
Para obtener más información, vea Usar cobertura de código para determinar la cantidad de código que se está probando.
Causas posibles de no ver ningún resultado
No se ejecutó ninguna prueba
Análisis
Compruebe la ventana de salida.En la lista desplegable Mostrar resultados desde, elija Pruebas.Compruebe si hay advertencias o errores registrados.Explicación
Se realiza el análisis de cobertura de código mientras se ejecutan las pruebas.Incluye sólo los ensamblados cargados en memoria cuando se ejecutan las pruebas.Si no se ejecuta ninguna de las pruebas, no hay nada que reportar para cobertura de código.Solución
En el Explorador de pruebas, elija Ejecutar todas para comprobar que las pruebas se ejecuten correctamente.Corrija cualquier error antes de utilizar Analizar cobertura de código.
Los archivos .pdb (símbolo) no están disponibles
Análisis
Abra la carpeta de destino de la compilación (normalmente bin\debug) y compruebe que para cada ensamblado, hay un archivo .pdb en el mismo directorio que el archivo .dll o .exe.Explicación
El motor de cobertura de código requiere que cada ensamblado tenga su archivo .pdb asociado, que es accesible durante la ejecución de pruebas.Si no hay ningún archivo .pdb para un ensamblado determinado, no se analizará.El archivo .pdb se debe generar de la misma compilación que los archivos .dll o .exe.
Solución
Asegúrese de que las configuraciones de compilación generan el archivo .pdb.Si los archivos .pdb no se actualizan cuando se compila el proyecto, abra las propiedades del proyecto, seleccione la página Compilación, elija Avanzado y revise Información de depuración.Si los archivos .pdb y .dll o .exe están en distintos lugares, copie el archivo .pdb en el mismo directorio.También es posible configurar el motor de cobertura de código para que busque archivos .pdb en otra ubicación.Para obtener más información, vea Personalizar el análisis de cobertura de código.
Usar un binario instrumentado u optimizado
Análisis
Determinar si el binario ha experimentado algún tipo de optimización avanzada, como la optimización guiada de perfiles, o si ha sido instrumentado por una herramienta de generación de perfiles como vsinstr.exe o vsperfmon.exe.Explicación
Si otra herramienta de generación de perfiles ha instrumentado o ha optimizado un ensamblado, el ensamblado se omitirá del análisis de cobertura de código.El análisis de cobertura de código no se puede realizar en dichos ensamblados.
Solución
Desactive la optimización y utilice una nueva compilación.
El código no está administrado (.NET) o no es código nativo (C++)
Análisis
Compruebe que se están ejecutando algunas pruebas en código administrado o de C++.Explicación
El análisis de cobertura de código en Visual Studio sólo está disponible en código administrado y código nativo (C++).Si trabaja con herramientas de otros fabricantes, puede que parte, o todo el código, se ejecute en una plataforma diferente.Solución
Ninguno disponible.
NGen ha instalado el ensamblado
Análisis
Compruebe que el ensamblado no sea cargado desde la caché de imágenes nativas.Explicación
Por razones de rendimiento, no se analizan ensamblados nativos de la imagen.Para obtener más información, vea Ngen.exe (Generador de imágenes nativas).Solución
Utilice una versión MSIL del ensamblado.No lo procese con NGen.
Archivo .runsettings personalizado con sintaxis incorrecta
Análisis
Si utiliza un archivo personalizado de .runsettings, puede que contenga un error de sintaxis.Esto da como resultado que no se ejecute ninguna cobertura de código.O bien la ventana de cobertura de código no se abre al final de la ejecución de pruebas o muestra resultados antiguos.
Explicación
Se pueden ejecutar las pruebas unitarias con un archivo .runsettings personalizado para configurar las opciones de cobertura de código.Las opciones le permiten incluir o excluir los archivos.Para obtener más información, vea Personalizar el análisis de cobertura de código.Solución
Hay dos tipos posibles de errores:
Error XML
Abra el archivo .runsettings en el editor XML de Visual Studio.Busque las indicaciones del error.
Error de expresión regular
Cada cadena en el archivo es una expresión regular.Busque errores en cada uno y, en particular, esté atento a:
Paréntesis que no coinciden (...) o paréntesis sin escape \(…\).Si desea emparejar un paréntesis en la cadena de búsqueda, debe omitirlo.Por ejemplo, para coincidir con un uso de la función: .*MyFunction\(double\)
Asterisco o signo más al principio de una expresión.Para hacer coincidir cualquier cadena de caracteres, utilice un punto seguido de un asterisco: .*
Archivo .runsettings personalizado con exclusiones incorrectas
Análisis
Si utiliza un archivo .runsettings personalizado, asegúrese de que incluya el ensamblado.Explicación
Se pueden ejecutar las pruebas unitarias con un archivo .runsettings personalizado para configurar las opciones de cobertura de código.Las opciones le permiten incluir o excluir los archivos.Para obtener más información, vea Personalizar el análisis de cobertura de código.Solución
Elimine todos los nodos Include del archivo .runsettings, y quite todos los nodos Exclude.Si eso corrige el problema, vuelva a ponerlos en fase.Asegúrese de que el nodo de DataCollectors especifica la cobertura de código.Compárelo con el ejemplo en Personalizar el análisis de cobertura de código.
Siempre se muestra algún código como no cubierto
El código de inicialización de archivos DLL nativos se ejecuta antes de instrumentación
Análisis
En código nativo vinculado estáticamente, parte de la función de inicialización DllMain y el código al que llama se muestra a veces como no cubierto, aunque se haya ejecutado el código.Explicación
La herramienta de cobertura de código funciona insertando la instrumentación en un ensamblado justo antes de que la aplicación comience a ejecutarse.En cualquier ensamblado cargado antes de ese momento, el código de inicialización de DllMain se ejecuta tan pronto como se carga el ensamblado y antes de que se ejecute la aplicación.Ése código aparecerá como no cubierto.Normalmente, esto se aplica a los ensamblados cargados estáticamente.
Solución
Ninguno.
Vea también
Otros recursos
Usar cobertura de código para determinar la cantidad de código que se está probando