2011-09-01 16 views
6

Soy nuevo en las pruebas unitarias, por lo que probablemente esté malinterpretando algo importante, pero se me ha pedido que cree algunas pruebas de unidad para mi servicio WCF. Es un servicio muy simple que ejecuta un procedimiento almacenado y devuelve el resultado. La segunda línea de mi operación es la siguiente:Pruebas de unidad defectuosa debido a la falta del archivo .config

string conn = ConfigurationManager 
    .ConnectionStrings["AtlasMirrorConnectionString"].ConnectionString; 

Todo funciona bien cuando se despliega el servicio, pero en virtud de la unidad de pruebas, parece que el archivo de configuración se vuelve invisible. ConfigurationManager.ConnectionStrings["AtlasMirrorConnectionString"] se convierte en una referencia nula y se lanza en consecuencia.

¿Cómo incluyo mi archivo de configuración en las pruebas? En este momento, el único comportamiento que puedo probar es el manejo de los archivos de configuración faltantes, lo cual no es muy útil.

Respuesta

5

preguntó una y otra vez y otra vez y respondió por mí la semana pasada y esta semana también :)

si tiene sus pruebas unitarias en otro proyecto (proyecto de prueba generado VS, biblioteca de clases, etc ...) simplemente cree una configuración de aplicación para ese proyecto de prueba de unidad y ponga las mismas claves de configuración que usted tener en el proyecto que funciona.

, por supuesto, estoy simplificando porque podría querer personalizar esas claves con valores de prueba específicos, pero como inicio copie lo que funciona, personalícelo en caso de que quiera apuntar a otra base de datos, máquina, etc. :)

+1

lo sentimos, hice de búsqueda, pero no podías t encuentra esto en cualquier lugar. – recursive

+1

Esta solución funcionará, pero no es una buena opción a largo plazo. Sería mejor tener una solución donde el archivo de configuración se mantendrá actualizado a medida que la solución cambie. – zlsmith86

3

Deberá decorar la clase o el método de prueba con el DeploymentItemAttribute para implementar el archivo de configuración en el directorio de prueba.

usar algo como esto en su TestClass (esto supone que tiene una copia de la app.config local para sus testclasses):

[DeploymentItem("app.config")] 
3

Si usted quiere que su unidad de prueba para tener siempre los mismos valores que su proyecto, puede utilizar la siguiente línea como un evento posterior a la generación en el proyecto de prueba

copy /Y "$(SolutionDir)ProjectName\App.config" "$(TargetDir)TestProjectName.dll.config" 
Cuestiones relacionadas