¿Cómo ejecuto NUnit en modo de depuración desde Visual Studio?

Recientemente he estado construyendo un marco de prueba para un poco de C # en el que he estado trabajando. Tengo NUnit configurado y un nuevo proyecto dentro de mi espacio de trabajo para probar el componente. Todo funciona bien si cargo mis pruebas de unidad desde Nunit (v2.4), pero llegué al punto en el que sería realmente útil ejecutar en modo de depuración y establecer algunos puntos de interrupción.

Probé las sugerencias de varias guías que sugieren cambiar las propiedades de “depuración” del proyecto de prueba:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe Command line arguments: /assembly: \TestDSP\bin\Debug\TestDSP.dll 

Estoy usando la versión de consola allí, pero también he intentado llamar a la GUI. Ambos me dan el mismo error cuando bash iniciar la depuración:

 Cannot start test project 'TestDSP' because the project does not contain any tests. 

¿Esto es porque normalmente cargo \ DSP.nunit en la GUI de Nunit y ahí es donde se realizan las pruebas?

Estoy empezando a pensar que el problema puede ser que VS quiera ejecutar su propio marco de prueba y es por eso que no encuentra las pruebas de NUnit.

Editar : Para aquellos que preguntan sobre los accesorios de prueba, uno de mis archivos .cs en el proyecto TestDSP se ve más o menos así:

 namespace Some.TestNamespace { // Testing framework includes using NUnit.Framework; [TestFixture] public class FirFilterTest { [Test] public void Test01_ConstructorTest() { ...some tests... } } } 

… Soy bastante nuevo en C # y en el marco de prueba de NUnit, así que es muy posible que haya olvidado algo de información crucial 😉

Solución final : el gran problema fue el proyecto que había usado. Si eliges Other Languages -> Visual C# -> Test -> Test Project … cuando elijas el tipo de proyecto, Visual Studio intentará usar su propio marco de prueba hasta donde yo sepa. Debería elegir un proyecto de biblioteca de clase C # normal en su lugar y luego las instrucciones en mi respuesta seleccionada funcionarán.

Utilizo la misma técnica que cuando intentas con Jon, sin el / indicador de ensamblaje, es decir,

 Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe Command line arguments: "\bin\Debug\Quotes.Domain.Tests.dll" 

¿TestDSP.dll contiene todos sus TestFixtures?

Como mi proyecto de prueba no es el proyecto de inicio en la solución, ejecuto mis pruebas haciendo clic derecho en el proyecto de prueba y seleccionando Depurar -> Iniciar nueva instancia

Cuando necesito depurar mis pruebas de NUnit, simplemente me nunit-agent.exe aplicación NUnit GUI nunit-agent.exe usando “Debug | Attach to Process” y ejecuto las pruebas desde la GUI. Cualquier punto de interrupción en mis pruebas (o el código que están probando) recibe un golpe. ¿Estoy malinterpretando tu pregunta, o funcionará para ti?

Simplemente elimine la línea que se parece a

  {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}  

de su archivo de proyecto. Esta línea básicamente le dice a VS.Net que es un proyecto de prueba, por lo tanto, el “proyecto de prueba no puede iniciarse”. FYI aquí, el 1st Guid dice “es una prueba”, el 2º dice “es C #”. Para obtener información sobre esas guías: http://www.mztools.com/Articles/2008/MZ2008017.aspx

Además de la respuesta proporcionada por @Justin aquí hay algunos detalles más para NUnit 2.6.

Usando NUnit 2.6, adjúntelo a nunit.exe o nunit-console.exe y NO al agente. La configuración señalada por @Justin es ligeramente diferente. A continuación se muestra un ejemplo de nunit.exe.config (lo mismo para nunit-console.exe.config).

      

Para el proyecto de prueba de .NET 4, para obtener puntos de interrupción para golpear, tendrá que comentar o eliminar la línea v2.0 como sugiere el comentario. Una vez que hice eso, pude depurar el proyecto de prueba .NET 4.0.

Si está usando NUnit 2.4 o posterior, puede poner el siguiente código en su clase SetUpFixture . (Puede hacer esto con versiones anteriores, pero deberá hacer el equivalente que tenga al SetUpFixture , o copiarlo en la prueba misma).

 [SetUpFixture] public class SetupFixtureClass { [SetUp] public void StartTesting() { System.Diagnostics.Debugger.Launch(); } } 

Lo que hace Debugger.Launch() es provocar que aparezca el siguiente cuadro de diálogo al hacer clic en Ejecutar dentro de NUnit.

JIT Debugger Dialog

A continuación, elige la instancia en ejecución de Visual Studio con su proyecto abierto (el segundo en mi captura de pantalla), luego se conectará el depurador y se mostrarán los puntos de interrupción o excepciones en Visual Studio.

En Nunit 3.0.1 (estoy usando VS2013), abra desde el menú principal> Prueba> Windows> Test Explorer. Luego, en “Explorador de prueba”, haga clic con el botón derecho en el caso de prueba, es posible que vea: enter image description here

Espero que esto ayude.

Instale TestDriven.NET , que es un complemento para Visual Studio

Desde allí, puede hacer clic con el botón derecho en el conjunto de prueba de la unidad y hacer clic en Ejecutar pruebas para ejecutar todo el conjunto, hacer clic derecho en una clase TestFixture para ejecutar solo las pruebas de esa clase o hacer clic derecho en un método de prueba para ejecutar solo ese método.

También tiene la opción de probar con el depurador, si necesita un punto de interrupción en sus pruebas en modo de depuración.

Pruebe NUnitit: un complemento de Visual Studio de código abierto para depurar casos de prueba NUnit

Página de inicio – http://nunitit.codeplex.com/

Elimine ProjectTypeGuids del archivo de proyecto.

Si puede lograr que la consola o la GUI funcionen, pero sus puntos de interrupción no se ven afectados, es posible que su aplicación ejecute un tiempo de ejecución de .NET diferente al de NUnit. Compruebe si su nunit-console.exe.config / nunit.exe.config tiene el tiempo de ejecución especificado. (Las configuraciones viven en el mismo directorio que el exe nunit). Especifique el tiempo de ejecución utilizando el nodo de inicio:

     

Si la ruta del proyecto contiene espacios, por ejemplo, “Nuevo proyecto” en la ruta \bin\Debug\New Project\Quotes.Domain.Tests.dll , adjunte la opción de inicio -> Argumentos de línea de comandos del proyecto con comillas dobles.

Pasé mucho tiempo para resolver esto.

Ahora con imágenes:

  1. Ejecute GUI NUnit ( descargue 2.6.2 desde aquí ) luego vaya a File -> Open Project

enter image description here

  1. Seleccione su archivo .dll prueba de la carpeta bin ( C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll )

  2. Vaya a Visual Studio Debug -> Attach to process (se abrirá la ventana Adjuntar para procesar)

  3. En la lista, desplácese hacia abajo y seleccione nunit-agent.exe luego haga clic en Attach

enter image description here

  1. En este punto, los puntos de corte en sus pruebas deben volverse de un rojo maduro (de un hueco).

  2. Haz clic en Run en Nunit Gui y deberías obtener tu punto de ruptura …

Espero que esto te ahorre algo de tiempo.

Con respecto a lo que dijo el Sr. Patrick McDonald

Como mi proyecto de prueba no es el proyecto de inicio en la solución, ejecuto mis pruebas haciendo clic derecho en el proyecto de prueba y seleccionando Depurar -> Iniciar nueva instancia

Intenté solicitar mi biblioteca de la clase de prueba, pero obtuve un error con respecto a la ruta, así que traté de eliminar los ‘Argumentos de la línea de comando’ y afortunadamente funcionó bien y como esperaba.

Parece que estás tratando de usar la biblioteca equivocada. NUnit solo puede iniciarse si el dll que está utilizando contiene TestFixtures.

+1 en TestDriven.Net. He tenido la oportunidad de usarlo varias veces. Puede descargar la versión personal para fines de evaluación de acuerdo con la licencia en http://testdriven.net/purchase_licenses.aspx .

Tengo el mismo error con MSTest. Encontré que en la ventana Prueba de salida , algunas de las pruebas tenían identificaciones duplicadas y no se podían cargar. Eliminé todas las pruebas duplicadas y ahora pude ejecutar las pruebas cuando comencé el proyecto.

También hay una extensión ahora llamada “Visual NUnit” que le permitirá ejecutar las pruebas desde Visual Studio de manera similar a la comstackción en los controles de framework de prueba. Verifíquelo en el administrador de extensiones.

Abra Visual Studio —> su Proyecto —> Seleccione ‘Propiedades’ —> Seleccione ‘Depurar’ -> Seleccione ‘Iniciar progtwig externo’ y configure la ruta de su NUnit allí (Ej: Iniciar progtwig externo = C : \ Archivos de progtwig \ NUnit 2.6.2 \ bin \ nunit.exe) —-> Guardar

Después de configurar esto simplemente haga clic en Depurar

Para mí, la solución fue adaptar el archivo de configuración nunit. Para usar nunit con 4.5-.Net framework y la opción de comstackción x64, tuve que agregar una línea a la etiqueta de inicio (versión runtime soportada).

     

Luego, podría comenzar haciendo clic con el botón derecho en TestProject Debug -> Start new instance. Antes, necesitaba volver a conectar manualmente el proyecto al proceso.

Mis propiedades de depuración eran, C: \ Archivos de progtwig (x86) \ NUnit 2.6.4 \ bin \ nunit.exe con el argumento de la ubicación del archivo .dll que se probará.

Más información: nunit para probar con .NET 4.0

Vea si esto ayuda .. Cómo agregar NUnit en Visual Studio

(RighteousRant) Aunque personalmente no me gusta este enfoque … Si necesitas un depurador mientras pruebas tu código, es un “olor” porque no tienes suficiente confianza / sabes cómo funciona tu código y necesitas el depurador para decirte eso. TDD debería liberarlo de necesitar un depurador si lo hace correctamente. Use ‘Adjuntar depurador a NUNit’ solo para casos excepcionales o cuando esté vadeando el código de otra persona.