2010-05-03 7 views
8

Cuando ejecuto mis Pruebas unitarias, todas las pruebas pasan, pero en lugar de "Prueba exitosa" o cualquiera que sea el mensaje de éxito, obtengo "Error de prueba" en la pequeña barra que me dice cuántas de mis pruebas pasan, a pesar de que pasaron todas mis pruebas.Errores de ejecución de prueba con MSTest en VS2010

Cuando hago clic en el texto, Me llevan a una página que me dice las siguientes dos cosas sucedieron:

Warning: conflict during test run deployment: deployment item '[...]\Booking.Web.dll' directly or indirectly referenced by the test container [...]\Booking.Web.Tests.dll cannot be deployed to 'Booking.Web.dll' because otherwise the file '[...]\Booking.Web.dll' would override deployment item '[...]\Booking.Web.dll' directly or indirectly referenced by '[...]\Booking.Web.Tests.dll'

Error: Cannot initialize the ASP.NET project 'Booking.Web' Exception was thrown: The website could not be configured correctly; getting ASP.NET proccess information failed. Requesting ' http://localhost:54131/VSEnterpriseHelper.axd ' returned an error: The remote server returned an error: (500) Internal Server Error.

No entiendo la mitad de lo que se queja. ¿Cómo me deshago de estos errores?

(Y como referencia: Booking.Web es un proyecto de ASP.NET MVC 2, Booking.Web.Tests es un proyecto de prueba, [...] es la ruta local completa de los proyectos en mi entorno, en la mayoría de los casos anteriores a la carpeta/bin/debug/dentro del proyecto Booking.Web)

Actualización: Como se indicó, busqué más información en el Visor de eventos. Esto es lo que encontré:

3008 A configuration error has occurred.
5/8/2010 2:26:15 AM
5/8/2010 12:26:15 AM
4ffbe9180c3d4c02adb9ac4d61dd0928
1
1
0
4484bbf4-1-129177519750954331
Full
/
D:\...\Booking.Web\
AASLOEG

1876
WebDev.WebServer40.EXE
Aasloeg\Tomas
ConfigurationErrorsException
Could not load file or assembly 'Ninject.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=79764a4ef1548af1' or one of its dependencies. Strong name signature could not be verified. The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045) at
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) at
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() at
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) at
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) at
...stack trace in absurdum.

+0

referencia a un proyecto ASP.NET en una unidad de prueba es casi siempre una mala idea. –

+0

OK ... Entonces, ¿cómo debería refactorizarme para salir de esto? –

+5

Hacer referencia al proyecto ASP.NET MVC en una prueba unitaria es una práctica común. De lo contrario, ¿cómo probarías las acciones del controlador? –

Respuesta

9

Antes que nada, tiene Cobertura de código habilitada. Puedes leer here al respecto. Entonces no hay problemas con las pruebas unitarias. Este es un problema de cobertura de código.

Segunda cosa - esta advertencia está bien - no importa.

Tercero: este error: este es el problema clave.

Puede haber diferentes problemas, lo más común es que deba hacer referencia a más conjuntos. Para saber exactamente qué debe cargarse, debe ir a Event Viewer y mirar Registros de Windows-> Solicitud

+0

Entonces, ¿funcionó? –

+0

Encontré un error con Ninject.Web.Mvc (para lo cual descargué la fuente y compilé contra Ninzzle 2 y ASP.NET MVC 2 dlls yo mismo ...) pero no he podido deshacerme del error, ya que No puedo entender por qué cargar el dll no funciona correctamente.Actualizaré mi publicación con la información que encuentro en el Visor de eventos. Además, como dices, tengo cobertura de código habilitada, pero ¿qué parte de esto estás diciendo que se ve afectado por eso? –

+0

Bueno, puede desactivar la cobertura de código. Pero si lo necesita, debe entender por qué aparece este problema. En realidad, si los has construido tú mismo, ¿los has firmado? 'Ninject.Web.Mvc, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 79764a4ef1548af1 - significa que busca el ensamblado firmado. Entiendo - esto parece realmente extraño que puede ejecutar el sitio web, pero la cobertura del código por alguna razón que nadie puede entender requiere más ensambles para ser incluidos en la aplicación. –

4

Tuve el mismo error relacionado con MS-Test quejándose de que una DLL podría "anular el elemento de despliegue blah.dll".

Esto ocurría porque yo estaba corriendo MS-prueba para múltiples DLL a la vez, así:

mstest.exe /testcontainer:Tests.web.dll /testcontainer:Tests.svcs.dll /testcontainer:Tests.core.dll 

Cuando MS-Test se ejecuta esto, trató de tomar toda la salida DLL de las pruebas y el lugar en /Out directorio de la ejecución de prueba. En mi caso, Tests.svcs.dll y Tests.core.dll tanto hace referencia a la misma de montaje (core.dll) y por lo tanto trató de copiar que DLL al mismo punto dos veces (haciendo así que la advertencia).

Para resolver esto, me separé la prueba se ejecuta para cada conjunto que dio cada prueba su propia carpeta /salida para la salida DLL de

mstest.exe /testcontainer:Tests.web.dll 

mstest.exe /testcontainer:Tests.svcs.dll 

mstest.exe /testcontainer:Tests.core.dll 
+0

No siempre es posible hacerlo. En mi caso, estoy ejecutando la prueba en el servidor de CI y tengo que ejecutarlos todos juntos para generar un solo archivo de resultados –

+0

¿Qué CI está usando? Ejecuto todas mis pruebas en Hudson/Jenkins y el complemento que utilizamos para mostrar resultados puede fusionar múltiples archivos de resultados. Simplemente le damos un comodín así: /TestResults/*.trx –

+0

Estoy usando Jenkins. ¿Qué complemento utilizas para procesar los resultados trx? –

Cuestiones relacionadas