2010-07-29 21 views
12

Tengo una .NET 4 DLL por la cual tengo problemas para generar pruebas unitarias. Estoy usando VS 2010 Standard. Cualquier otro proyecto en la solución generará pruebas de unidad para las clases. Para los demás ensamblajes, puedo ingresar al código existente, hacer clic con el botón derecho en el nombre de la clase y seleccionar "Crear pruebas unitarias". Me sale la ventana de selección que sigue muy bien.VS 2010 Error Generating Unit Tests

El ensamblaje que realmente necesito para obtener cobertura no generará los apéndices de prueba con la misma metodología mencionada anteriormente. Voy a una clase en el proyecto/ensamblaje, haga clic derecho, seleccione "Generar pruebas unitarias", y yo estoy reunido con el siguiente error:

Unit Test Generation Error: The follow error was encountered while reading module 'xx.Core': Could not resolve type reference: [System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx]System.Web.Routing.RouteValueDictionary

Por lo que yo puedo decir, no hay referencias directas en el proyecto a la versión de Framework 2.0 de System.Web mencionada en el mensaje de error. Buscar en el directorio que contiene el proyecto y los archivos .CS con una herramienta llamada grepWIN para ver si el texto para esa referencia existe en cualquier archivo produce cero resultados. ¿Es posible hacer referencia tanto a la versión 2.0 como a la 4.0 del sistema.web dll al mismo tiempo, y si es así, por qué querría hacer eso?

¿Alguna idea sobre cómo deshacerse de este mensaje de error para que pueda anular correctamente algunas pruebas de unidad?

+1

Tengo la misma experiencia, pero lamentablemente no tengo respuesta :-( –

Respuesta

0

¿Está utilizando NUNIT para la prueba unitaria? Si es así, por defecto Nunit apunta a .Net 2.0. Debe realizar los cambios apropiados en el archivo nunit.exe.config.

Podría, por favor, en el Explorador de Windows, navegar a C: \ WINDOWS \ Microsoft.NET \ Framework. Allí verá una cantidad de carpetas con nombres de este tipo: v1.0.xxxxx, v1.1.xxxxx, ..., v4.0.xxxxx. Escriba el nombre exacto de la carpeta v4.0.xxxxx.

Con un editor de texto, abra el archivo nunit.exe.config, que se encuentra en esta carpeta: C: \ Archivos de programa \ NUnit 2.5.2 \ bin \ net-2.0.

En Agregar:

<startup> <requiredRuntime version="v4.0.xxxxx" /> </startup> 

[reemplazar xxxxx por los números correctos que anotó]

y bajo complemento:

<loadFromRemoteSources enabled="true" /> 

El cambio anterior trabajó para mí. Con suerte para otras personas que enfrentan este problema.

+2

OP usa la capacidad de generación de pruebas. VS2010 debe crear stubs para pruebas unitarias, junto con el archivo, la clase y todas las demás tuberías. clase para que las pruebas unitarias puedan implementarse con NUnit Framework. – GregC

1

Tuve el mismo problema con el ObservableCollection.

Mi "solución" fue actualizar todos los proyectos referenciados y sus proyectos referenciados a .NET 4.0. Luego funcionó ... Sin embargo, esto parece un poco extraño y podría haber hecho algo más que causó la desaparición del problema.

1

Recientemente tuve un problema similar con uno de mis proyectos. El problema fue que, después de haber construido mi biblioteca, renombré el archivo dll. Mi proyecto que hace referencia al dll aún está bien construido, sin embargo, recibí un error similar al generar pruebas unitarias hasta que cambié el nombre del dll a su nombre original cuando se había construido.