c# - studio - ventana de depuracion en visual basic
¿Cómo ejecuto NUnit en modo de depuración desde Visual Studio? (19)
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: <full-path-to-solution>/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 intento 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.
Abra Visual Studio ---> su Proyecto ---> Seleccione ''Propiedades'' ---> Seleccione ''Depurar'' -> Seleccione ''Iniciar programa externo'' y configure la ruta de su NUnit allí (Ej: Iniciar programa externo = C : / Archivos de programa / NUnit 2.6.2 / bin / nunit.exe) ----> Guardar
Después de configurar esto simplemente haga clic en Depurar
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).
<startup useLegacyV2RuntimeActivationPolicy="true">
<!-- Comment out the next line to force use of .NET 4.0 -->
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0.30319" />
</startup>
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.
Ahora con imágenes:
- Ejecute GUI NUnit ( descargue 2.6.2 desde aquí ) luego vaya a
File -> Open Project
Seleccione su archivo
.dll
prueba de la carpeta bin (C:/....../[SolutionFolder][ProjectFolder]/bin/Debug/xxxxTests.dll
)Vaya a Visual Studio
Debug -> Attach to process
(se abrirá la ventana Adjuntar para procesar)En la lista, desplácese hacia abajo y seleccione
nunit-agent.exe
luego haga clic enAttach
En este punto, los puntos de corte en sus pruebas deben volverse de un rojo maduro (de un hueco).
Haz clic en
Run
enNunit 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.
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?
Elimine ProjectTypeGuids del archivo de proyecto.
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.
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 compilación x64, tuve que agregar una línea a la etiqueta de inicio (versión runtime soportada).
<startup useLegacyV2RuntimeActivationPolicy="true">
<!-- Comment out the next line to force use of .NET 4.0 -->
<supportedRuntime version="v4.0.30319" />
</startup>
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 programa (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
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 .
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/
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.
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.
Si la ruta del proyecto contiene espacios, por ejemplo, "Nuevo proyecto" en la ruta <path>/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.
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:
<configuration>
<startup>
<supportedRuntime version="4.0" />
</startup>
Simplemente elimine la línea que se parece a
<ProjectTypeGuids>
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>
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
También hay una extensión ahora llamada "Visual NUnit" que le permitirá ejecutar las pruebas desde Visual Studio de manera similar a la compilación en los controles de framework de prueba. Verifíquelo en el administrador de extensiones.
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.
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: "<path>/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
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.