visual unit test studio net ejemplo dotnet .net unit-testing mstest

studio - unit test.net core



¿Cómo se pueden usar archivos de configuración "externos"(es decir, con configSource) con un proyecto de prueba de unidad MSTest? (3)

Lo encontré:

Si edita la configuración de ejecución de prueba (haciendo doble clic en el archivo .testrunconfig que se coloca en la carpeta de la solución ''Elementos de solución'' cuando agrega una nueva prueba de unidad), obtiene un diálogo de configuración de ejecución de prueba. 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 forma, ahora puedo definir la mayor parte de mi configuración en un conjunto de archivos .config externos y hacer que se copien automáticamente al ejecutar cada prueba.

Para simplificar, generalmente dividí mucha de mi configuración (es decir, los contenidos de app.config y web.config) en archivos separados .config, y luego los referenciaba desde el archivo de configuración principal usando el atributo ''configSource''. Por ejemplo:

<appSettings configSource="appSettings.config"/>

y luego colocando todos los pares de clave / valor en ese archivo appSettings.config en lugar de tenerlo en línea en el archivo de configuración principal:

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

Normalmente, esto funciona muy bien con la aplicación en sí, pero tengo problemas al intentar 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 el resultado a carpetas de aspecto ofuscado que son diferentes de cada ejecución de prueba (en lugar de a la carpeta ''bin'' como podría pensar), nunca parece ser capaz de encontrar esos archivos externos mientras las pruebas están ejecutando. 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?


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 usando 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 sean independientes de los archivos .testrunconfig.


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

    <"connectionStrings configSource =" ConnectionString.config ">"

  2. abrir símbolo del sistema (CMD) en privilegios de administrador.

  3. Cree un enlace simbólico con el nombre de 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 el archivo de configuración ConnectionString en la ubicación especificada. y funciona con éxito