c# - test - pruebas unitarias visual studio
Ejecución de pruebas NUnit en Visual Studio 2010 con cobertura de código (5)
Hemos actualizado recientemente de Visual Studio 2008 a Visual Studio 2010. Como parte de nuestra base de código, tenemos un conjunto muy grande de pruebas NUnit. Nos gustaría poder ejecutar estas pruebas de unidad dentro de Visual Studio, pero con la cobertura de código habilitada . Tenemos ReSharper, por lo que podemos ejecutar las pruebas dentro de Visual Studio, pero no permite que la herramienta de cobertura de código haga su trabajo y genere las estadísticas de cobertura.
¿Hay alguna manera de hacer que esto funcione, o tendremos que convertir las pruebas a MSTest?
EDITAR: Ya hemos probado las herramientas sugeridas:
TestDriven.Net
Esto ejecuta las pruebas NUnit bien dentro de Visual Studio e incluso funciona con la cobertura del código, pero también incluye las pruebas como parte de los ensamblajes cubiertos. No parece haber una manera de excluir las pruebas, pero incluye el ensamblaje que se está probando (nuestras pruebas están en un ensamblaje diferente del código que prueban). Tampoco queremos gastar las £ 2000 adicionales que nos costaría obtener TestDriven.net para todo el equipo.Gallio
Esto no funcionó. Para obtener resultados de cobertura, las pruebas deben ejecutarse en el ejecutor de pruebas de Visual Studio. Gallio no proporciona este soporte para NUnit.
¿Alguna idea más? Encontramos un par de intentos de código abierto para hacer funcionar este tipo de cosas, pero están obsoletos y no se han tocado durante mucho tiempo (y, por lo tanto, no son compatibles con VS2010).
Adrian
Eche un vistazo a TestMatrix (ejecutará sus pruebas de unidad, realizará la cobertura de código y el perfil de rendimiento de prueba de unidad) y todas estas se integrarán de forma nativa en Visual Studio.
El marco de automatización de Gallio es un proyecto de código abierto que debería permitirle lograr esto. El sitio está en http://www.gallio.org/ Hay soporte inicial de VS2010 en la última versión con más trabajo en las compilaciones nocturnas.
Hay más información sobre esto aquí: http://weblogs.asp.net/astopford/archive/2010/04/13/gallio-and-vs2010.aspx
Sin embargo, si tiene dinero para gastar en esto, visite http://TestDriven.Net
Encontré el proyecto Code Coverage Runner en CodePlex , que une las pruebas de VS y las API NUnit a través de un adaptador. Al momento de escribir esto, el proyecto no se ha actualizado desde marzo de 2008, pero puede satisfacer sus necesidades.
Parece que Jetbrains está abordando este problema con un nuevo producto llamado "dotCover". Todavía está en su infancia, pero dado su historial, debería ser un jugador importante pronto.
Hasta que se publique, puedes "probar" las compilaciones nocturnas ubicadas here .
Puede hacer que la funcionalidad de cobertura de código de VS 2010 funcione mientras se ejecutan las pruebas de NUnit, pero es un infierno de trabajo de configuración:
Configura una prueba genérica que ejecute nunit-console-x86.exe de esta manera:
¿La cobertura de código VS2010 es compatible con nUnit? (descripción simplificada para xUnit)
http://msdn.microsoft.com/en-us/library/ms182624(v=vs.100).aspx (descripción general)
Asegurarse:
- tienes "instrumento en su lugar" activado. Confiar en el despliegue de VS no funcionará
- ejecuta nunit-console-x86.exe. La versión de 64 bits no funcionará.
- todas las bibliotecas que necesitan resultados de cobertura de código se construyen en una sola carpeta. Copiarlos (por ejemplo, mediante un evento de compilación) no funcionará. (Para avanzados: puede instrumentar las bibliotecas en otra ubicación que no sea su carpeta de salida de compilación, pero eso es bastante complicado).
- La carpeta con todas las bibliotecas es el directorio de trabajo para la prueba genérica y usted inicia NUnit desde ella.
- proporciona el argumento a NUnit como ruta relativa a la carpeta de trabajo.
- además, proporciona a NUnit la opción de línea de comandos / noshadow
Cuando copia sus archivos DLL de diferentes carpetas en una única carpeta para realizar pruebas, pueden suceder cosas extrañas. Por ejemplo, obtuve el resultado de que casi todo el código para las pruebas unitarias está cubierto cuando se ejecutan las pruebas unitarias . ¡Qué vergüenza, esa cobertura de código no encontró la biblioteca probada por las pruebas de unidad!
Bueno, después de configurar todos los directorios de salida de compilación, me encontré con el problema más extraño: desde esa carpeta no se ejecuta NUnit. Lo tengo funcionando desde 2 ubicaciones separadas, pero aquí va "nunit-console-runner.dll no encontrado".
Solo lo hice bien con la instrumentación de la biblioteca probada en otra ubicación a través de:
- pruebas> editar configuración> local
- Datos y diagnósticos> cobertura de código
- desactivar la ubicación original y agregar la biblioteca desde la carpeta de prueba
Hoy funcionó al instante, pero el otro día traté de obtener las ubicaciones correctas durante aproximadamente una hora. Todavía no sé en qué me equivoqué ese día.