2010-04-19 15 views

Respuesta

19

Es factible, pero requiere un poco de configuración. Lo tengo trabajando con xUnit. Presumiblemente, lo siguiente también funcionará con NUnit.

Para que esto funcione, necesitará tres proyectos

  • la prueba bajo sistema - SUT
  • Un proyecto de pruebas de la utilización de su marco de pruebas de unidad favorita - xUnitTest
  • A VS Test Project - VSTest

    1. Cree el proyecto VSTest (respiración fácil)
    2. suprima el archivo por defecto UnitTest1.cs
    3. Añadir una "prueba genérica" ​​a VSTest
    4. especificar la ruta completa a la versión Win32 del corredor de la consola para su marco de prueba, como xunit.console.x86.exe
    5. especificar la ruta completa a la xUnitTest DLL
    6. Bajo la prueba Menú- VS> Editar Prueba Configuración-> Local->
    7. datos & diagnósticos "Tab"
    8. Asegúrese de que sólo se Código la cobertura está habilitado
    9. fila
    10. Seleccione cobertura de código, a continuación, haga clic en el botón "Configurar" arriba (sí, se trata de una interfaz de usuario bien diseñada :)
    11. En el "Detalle de cobertura de código" diálogo
    12. Seleccionar tanto las DLL para SUT y xUnitTest
    13. Habilitar "asambleas de instrumentos en la prueba"

Ahora cuando se ejecuta la prueba de VS2010, que va correctamente instrumento de la prueba dlls, ejecute el código de corredor y recopile la información en Visual Studio.

+1

¡Gracias! No es la respuesta sin problemas que esperaba ... :-P – stiank81

+0

He estado intentando durante varias horas. Obtengo los ensambles instrumentados pasados ​​a nunit-console, pero nunca vuelvo a obtener resultados de cobertura de código. – LeffeBrune

+1

Hay un pequeño detalle que se me escapó; es absolutamente necesario usar el corredor x86 para sus pruebas (como nunit-console-x86.exe). Cambiando el corrector de prueba a x86 corrigió problemas que he estado teniendo. – LeffeBrune

1

Que yo sepa, no es así. Nuestra herramienta TestMatrix sí lo hace.

+0

Gracias por comentar. +1. No sé si puedo confiar en esto sin una fuente si en realidad estás vendiendo un producto de la competencia :-P Así que voy a dejar esto colgando por un tiempo más ... – stiank81

+0

Esto es justo. No tiene que confiar en mí, descargue una versión de prueba de VS2010 y compruébelo usted mismo :) Y no estamos compitiendo con VS, estamos ofreciendo productos complementarios para mejorarlo ... Por cierto, intenté incorporarme para ejecutar dasBlog (usa NUnit) pruebas en VS2010 Premium: no ve la prueba. La descarga de la versión de prueba de VS2010 está aquí - http://msdn.microsoft.com/en-us/vstudio/bb984878.aspx – sergeb

1

Teóricamente, debería. Incluso hay documentation for it on MSDN. Básicamente, debe configurar un "proyecto de prueba genérico" que envuelva la prueba NUnit. En la práctica, he intentado que funcione durante casi tres horas y todavía no funciona. El ensamblaje está instrumentado, pero no hay resultados de cobertura.

Siempre recibo este mensaje: "Se generaron resultados vacíos: no se usó ningún binario instrumentado. Consulte los detalles de ejecución de prueba para detectar problemas de instrumentación", pero no se informan problemas en ese archivo.

Además, aparece un error de VSPerf en el registro de eventos. I submitted this as a bug to Microsoft. Sin embargo, esto podría estar relacionado con mi máquina. Desde que envié ese error justo ahora, todavía no sé si otros pueden reproducir el problema o no.

+0

Suena frustrante ... No lo intenté todavía, pero parece que debería ser posible entonces. Por favor grita si lo resuelves! – stiank81

+0

Intenté configurar esto y obtuve nunit ejecutando ensamblajes instrumentados, pero faltan datos de cobertura de código. Voto tu error en el sitio MS. – LeffeBrune

+0

Asegúrese de utilizar el corredor x86 para sus pruebas (nunit-console-x86.exe). – LeffeBrune

5

Después de jugar con esto por poco más de una hora, no pude hacer que funcione correctamente. Pude hacer que la prueba genérica se ejecutara correctamente con la instrumentación para NUnit 2.5.5 utilizando nunit-console.exe. Aunque el corredor de la consola NUnit ejecutó mi prueba con éxito a través del VSTest genérico, nunca pude generar resultados de cobertura de código.

Aunque las características de prueba de VS2010 suenan muy bien al leer sobre ellas, la implementación parece demasiado compleja y muy pesada. He estado usando NUnit durante años con gran éxito y muy poca fricción.

Decidí probar JetBrains dotCover beta y en 5 minutos lo descargué, lo instalé y pude configurarlo y usarlo con mucho éxito. Se integra sin problemas en ReSharper 5 y acaba de funcionar para mis pruebas NUnit. El resaltado de código es una gran herramienta visual para localizar rápidamente bloques de código que no fueron ejecutados por las pruebas.

2

Debe desactivar shadowcopy en NUnit para que funcione. Para hacerlo, usa la bandera/noshadow.

p. Ej. C: \ Archivos de programa (x86) \ NUnit 2.6 \ bin \ nunit-console-x86.exe MyLibrary.dll/noshadow

2

Probé todos los métodos que encontré en Google para habilitar eso y luego decidí dar TestDriven.NET a tratar. Funcionó de forma brillante: clik-right en la solución, prueba con cobertura y hecho. En serio, no podría ser más fácil.

2

Tuve el mismo problema y encontré la manera de resolverlo. El dll del proyecto que se muestra en el cuadro de diálogo "Detalle de Cobertura del Código" es el ensamblaje incorrecto que se debe instrumentar y de esa forma se obtienen resultados vacíos. ¡Así que necesitas obtener esa dll de otra carpeta, está en la carpeta del proyecto de prueba de la unidad! Como lo agregó como referencia al proyecto de prueba de su unidad, estará allí. Así que, por ejemplo, en mi caso, creé una calculadora calced del proyecto simple y luego creé un proyecto de prueba de unidad llamado TestCalculator y agregué Calculator.dll como referencia en el proyecto de prueba de la unidad. Entonces, en el cuadro de diálogo "Detalle de cobertura de código", hago clic en "Agregar ensamblaje" y selecciono Calculator.dll de la carpeta ".. \ TestCalculator \ bin \ Debug". De esa manera, funcionará.

26

Visual Studio 2012 agregó soporte para marcos de pruebas de unidades de terceros.

Los plugins marco de pruebas disponibles incluyen:

  • NUnit
  • xUnit.net
  • MbUnit
  • QUnit
  • Jasmine apoyo

La adición es muy fácil porque se puede agréguela desde el Visual Studio Extension Manager.

Por ejemplo, puede agregar el "Adaptador de prueba NUnit".

Y ahora el "Analizar código de cobertura" funciona con el marco de la unidad de terceros. Puede inspeccionar todas las pruebas o solo una.

Y si utiliza VS 2010 no tema actualizar a VS2012 porque los archivos sln son compatibles (necesita VS2010 con SP1).

+1

Esta es la manera de hacerlo. No desperdiciaría tu tiempo haciendo el ticked (solución más compleja) cuando esto funcione bien. –

+1

Solo se aplica a VS2012 Ultimate o Premium. 'Analizar código de cobertura' no está disponible en Professional. [fuente] (http://msdn.microsoft.com/en-us/library/dd537628.aspx) y [fuente] (http://social.msdn.microsoft.com/Forums/vstudio/en-US/afd3ee87 -76e4-499d-ad8a-dbc6adb96cb9/visual-studio-professional-2012-theres-no-button-analyze-code-coverage) –

0

Muchas de las respuestas en este hilo me han ayudado mucho, pero es un infierno obtener todos los pequeños detalles de múltiples respuestas.

He compilado una lista de 6 pistas de que, junto con la respuesta marcada por Scott Weinstein hizo el truco para mí: Running NUnit tests in Visual Studio 2010 with code coverage

A pesar de que no merezco upvotes en ambas respuestas, sólo me sobra downvotes para copiar:

  • de Scott Weinstein
  • John y Scott McKay
  • Lili
  • mnemosyn

¡Vívelo!

Cuestiones relacionadas