NUnit no está ejecutando el código de Visual Studio 2010

98

Estoy intentando cargar una dll beta de Visual Studio 2010 en la GUI de NUnit. Recibo un error emergente.

Este ensamblado está construido por un tiempo de ejecución más nuevo que el tiempo de ejecución cargado actualmente y no se puede cargar. Es posible que esté intentando cargar una compilación de ensamblado con una versión posterior del CLR que la versión en la que NUnit se está ejecutando actualmente.

¿Cómo hago para que un ejecutable se ejecute en .NET 4?

Pelota
fuente
¿Esta pregunta realmente se relaciona con el código VS 2010 o .NET 4? - Estoy buscando una herramienta que me permita ejecutar pruebas NUNIT en Visual Studio 2010 y esta pregunta es engañosa.
Nicolas Irisarri
@Nicolas: se refiere a .NET 4.0.
Daniel A. White

Respuestas:

132

Descargué la fuente NUnit 2.5 y abrí la solución VS2008 en la versión beta de VS2010. Una vez finalizada la conversión, abrí todos los proyectos y cambié la configuración del marco de destino para todos los proyectos a ".NET Framework 4.0". Luego construí la solución sin errores. Ahora puedo usar la aplicación NUnit GUI para ejecutar pruebas creadas para .NET 4.0. No he realizado pruebas exhaustivas de esta compilación, por lo que puede haber problemas, pero para mis propósitos funciona bien.

Actualización: no es necesario reconstruir NUnit. Descubrí que si agrega lo siguiente al archivo de configuración de NUnit relevante, puede ejecutar un dll de prueba creado para .NET 4.0.

En <configuración> agregue:

<startup>
  <supportedRuntime version="v4.0.30319" />
</startup>

y en <runtime> agregue:

<loadFromRemoteSources enabled="true" />
Charles Cook
fuente
3
Ok, las actualizaciones de configuración lo hacen funcionar, pero tuve que usar version = "v4.0.21006" para mi etiqueta requiredRuntime.
mkmurray
4
Por cierto, la ubicación predeterminada del archivo de configuración es: C: \ Archivos de programa \ NUnit 2.5.3 \ bin \ net-2.0 \ nunit.exe.config Agregar esas opciones a la configuración funcionó para mí.
Brad Irby
2
No se pudo hacer que esto funcione con la última versión de Nunit + .net4 RTM. Agregué las entradas sugeridas a nunit-console.exe.config pero obtengo: System.ArgumentException: El marco net-4.0 no está disponible Probé con las versiones anteriores + v4.0.30319 Estoy ejecutando 2008 R2 x64
Andreas Öhlund
1
Para el corredor de la consola, cambie las configuraciones como se mencionó, pero usando v4.0.30319 para la versión RTM de .NET 4.0. Además, ejecútelo con este argumento de línea de comando: /framework=4.0.30319
Lance Fisher
1
Tuve suerte al usar la opción de línea de comando /framework:net-4.0.30319 en lugar de cambiar la configuración. Esto fue útil para poder controlar qué aplicaciones usaban el CLR 4.0 y cuáles no.
Kevin Crowell
25

Con el lanzamiento de .NET 4, utilicé

<supportedRuntime version="v4.0.30319" />

en NUnit 2.5.4 exe.config en lugar de requiredRuntime, y la etiqueta loadFromRemoteResources como se muestra arriba y todo funcionó bien. ¡Gracias!

pelazem
fuente
17

No tienes que modificar ningún archivo

solo abre este archivo y todo funcionará bien

C: \ Archivos de programa (x86) \ NUnit 2.5.10 \ bin \ net-2.0 \ nunit-x86.exe

noche
fuente
Gracias, resolvió mi caso. Tiene que usar la versión x86 de nunit para las pruebas unitarias compiladas x86. Las advertencias de la versión CLR fueron una pista falsa. Usando nunit 2.5.10.
Nigel Touch
Lo mismo aquí, de alguna manera tiene que usar la versión x86
gavin
12

En NUnit 2.5.5 se puede especificar en la línea de comando la opción /framework=net-4.0 y es compatible con los nuevos ensamblados generados con el lanzamiento del último VS2010.

Cristian T
fuente
3
Nunca he podido hacer que esto funcione. He visto a gente usar /framework:net-4.0.30319 y todo tipo de variaciones. Sería bueno si incluyeran las opciones reales en los documentos del sitio.
Jason Short
2
@Jason Parece que esto solo funciona en la versión de consola. La versión de GUI no tiene esta opción.
Roman Starkov
+1 por mencionar que esto funciona a partir de la versión 2.5.5. Tenía NUnit lanzando ArgumentExceptions y NullReferenceExceptions en una de mis máquinas, y resultó que era debido a la versión 2.5.0.
realMarkusSchmidt
2

La solución propuesta funcionó muy bien para que NUnit se ejecute. Desafortunadamente, cuando llegué a mi paso de cobertura de código, NCover comenzó a darme:

El proceso perfilado finalizó. No se estableció la conexión del generador de perfiles.

La mejor solución que encontré para esto fue simplemente usar la versión "-x86" de NUnit con NCover:

NCover.Console.exe nunit-console-x86.exe --parámetros adicionales--

Funciona ahora.

Scott Marlowe
fuente
1
Gracias por esto, estaba experimentando el mismo problema, ¡tu solución lo resolvió!
CubanX
2

Para encontrar su versión .net 4 en Visual [C # 2010 Express, o lo que sea] vaya a "Acerca de" de la aplicación Visual en el elemento de Ayuda del menú. Debería aparecer como la versión debajo de la línea Microsoft .NET Framework en la parte superior derecha de la ventana.

Dan Paden
fuente
1

Me encontré con el mismo mensaje de error mientras ejecutaba NUnit 2.4.8. Como no había actualizado en algún tiempo, instalé el NUnit actual (v2.5.9) y descubrí que ahora es compatible con ensamblajes VS2010. Entonces, si ha encontrado este error recientemente, verifique su versión de NUnit : a partir de diciembre de 2010 (más o menos), lo único que debe hacer es actualizar NUnit.

Michael Sorens
fuente
Estoy ejecutando NUnit 2.5.9 descargado el 15/03/2011 y este problema no desaparece para mí. Incluso si intento la solución propuesta
DrLazer
1

A partir de NUnit 2.5.10, puede habilitar el soporte de Visual Studio en el corredor GUI:

Herramientas-> Configuración-> Soporte IDE

Después de eso, pude conectarme con éxito al proceso nunit-agent.exe que ejecuta su ensamblado en un dominio de aplicación .NET 4.0

Campeón
fuente
0

Si experimenta este problema después de actualizar a nunit 2.5.5, deberá actualizar nant a la última versión para mí, era .91 alpha.

Adán
fuente
0

Me pareció muy útil para comenzar a partir de NUnit Aplicación plantilla . Es compatible con VS C # Express, permite depurar pruebas y contiene NUnit precompilado para .NET 4.0. Gracias al autor, el nuevo proyecto de prueba se prepara con un solo clic.

Ernesto
fuente