2008-09-30 6 views
11

Para simplificar, generalmente divido una gran cantidad de mi configuración (es decir, el contenido de app.config y web.config) en archivos .config separados, y luego los referencia desde el archivo de configuración principal mediante el atributo 'configSource'. Por ejemplo:¿Cómo se pueden usar archivos de configuración "externos" (es decir, con configSource) con un proyecto de prueba de unidad MSTest?

<appSettings configSource="appSettings.config"/> 

y luego la colocación de todos los pares clave/valor en ese archivo appSettings.config en lugar de tener esta línea en el fichero de configuración principal:

<appSettings> 
    <add key="FirstKey" value="FirstValue"/> 
    <add key="SecondKey" value="SecondValue"/> 
    ... 
</appSettings> 

lo general, esto funciona muy bien con la aplicación en sí, pero me encuentro con problemas cuando intento escribir pruebas de unidades que, por cualquier razón, necesitan obtener algún valor de una sección de configuración que está almacenada en uno de estos archivos externos. (Entiendo que la mayoría de estos se podrían considerar como "pruebas de integración", ya que dependen del sistema de Configuración, y también tengo "pruebas de unidades puras", pero ese no es el problema. Realmente estoy buscando para probar que estos valores de configuración se recuperan correctamente y afectan el comportamiento de la manera correcta).

Debido a la forma en que MSTest compila y copia la salida a carpetas de aspecto ofuscado que son diferentes de cada ejecución de prueba (en lugar de la carpeta 'bin' como podría pensar), nunca parece poder encontrar esas externas archivos mientras se ejecutan las pruebas. Intenté jugar con las acciones de creación de publicaciones para hacer que esto funcione, pero sin suerte. ¿Hay alguna manera de copiar estos archivos externos en la carpeta de salida correcta en tiempo de ejecución?

Respuesta

11

lo encontró:

Si modifica la configuración de prueba de funcionamiento (haciendo doble clic en el archivo .testrunconfig que consigue poner en carpeta de la solución la 'solución' Los productos que cuando se agrega una nueva prueba de la unidad), se obtiene una prueba ejecutar el diálogo de configuración. Hay una sección llamada 'Despliegue' en la que puede especificar archivos o carpetas completas desde cualquier lugar de la solución que pueden copiarse con los ensamblados compilados en tiempo de ejecución en la carpeta correcta.

De esta manera, ahora puedo definir la mayor parte de mi configuración en un conjunto de archivos .config externos y hacer que se copien automáticamente en el transcurso de cada prueba.

+4

Tenga en cuenta el siguiente archivo se renombró entre VS2008 y VS2010: "localtestrun.testrunconfig" (v3.5 .NET) y "Local.testsettings" (v4.0 .NET): http: // social.msdn.microsoft.com/Forums/en/vststest/thread/1422bfb0-a637-430c-a2bf-0b199a02f013 – Ubikuity

10

Las configuraciones de ejecución de prueba son un poco incómodas cuando se intenta ejecutar pruebas fuera de Visual Studio.

Para la ejecución de línea de comandos utilizando MSTest, se vuelven bastante engorrosos para mantenerse "limpios". También son "globales" para la solución por lo que los archivos externos se copiarán para cada proyecto de prueba.

Yo prefiero el atributo DeploymentItem.

[TestMethod] 
[DeploymentItem(@"test_data.file")] 
public void FooTest() 
{...} 

Hace que las pruebas independientes de los archivos .testrunconfig.

1
  1. escribe esto en tu connectionString. Primero ConnectionString.config no existe.

    < ">" símbolo del sistema abierto "connectionStrings configSource =" ConnectionString.config

  2. (CMD) en el administrador privilegiado.

  3. Cree un enlace simbólico con el nombre ConnectionString.config en la carpeta bin/debug.

C: \ Windows \ Systems32>mklink "C:\Link To Folder\....\ConnectionString.config" "C:\Users\Name\Original Folder\.....\...\Secure ConnectionString.config"

finalmente crea ConnectionString archivo de configuración en la ubicación especificada. y funciona con éxito

enter image description here

Cuestiones relacionadas