Tengo una prueba que requiere que se lea un archivo XML y luego se analice. ¿Cómo puedo copiar este archivo en la carpeta de ejecución de prueba cada vez?
El archivo XML está configurado en "Copiar si es más nuevo" y un modo de compilación de "ninguno" (ya que no es realmente una cosa compilable)
visual-studio
mstest
Aaron Powell
fuente
fuente
Parece que si proporciona un archivo TestSettings para la Solución, puede desmarcar la opción "Habilitar implementación" y evitar que mstest intente ejecutarse desde la
...TestResults\...\out
carpeta donde no copia sus archivos adicionales (a menos que los convierta en una opción de implementación) .Esto también es útil si depende de que los archivos adicionales estén en una estructura de carpeta preservada porque los elementos de implementación parecen copiarse directamente (planos) en la carpeta de ejecución temporal (fuera) si usa la opción Implementación, Agregar carpeta en TestSettings ( Las respuestas anteriores sugieren que puede mantener la estructura si agrega cada elemento como su propio DeploymentItem).
Para mí funcionó bien ejecutando pruebas directamente en Visual Studio (es decir, mis archivos adicionales en su estructura fueron encontrados y usados por pruebas) porque había creado un archivo TestSettings por otra razón hace mucho tiempo (que tiene Habilitar implementación sin marcar), pero no cuando TeamCity Ejecuté mstest para ejecutar pruebas porque no había especificado que se debería usar el archivo TestSettings.
Para crear un archivo TestSettings en Visual Studio, haga clic con el botón derecho en la Solución y elija New Item, y seleccione la plantilla TestSettings. Para usar el archivo TestSettings en el símbolo del sistema de mstest.exe, agregue la opción
/testsettings:C:\Src\mySolution\myProject\local.testsettings
(o agregue como una opción de línea de comando adicional en TeamCity con la ruta adecuada)fuente
La respuesta de Preet se usa para implementar elementos para una sola prueba. Si desea hacerlo a nivel de solución, use la configuración .testrunconfig .
fuente
La mejor solución para mí es usar configuraciones de prueba, especialmente si varias pruebas necesitan los mismos archivos de datos.
Primero cree un archivo de configuración de prueba y agregue los elementos de implementación que necesita (nombre de archivo o carpeta):
Ejecutando en Visual Studio, use "seleccione Archivo de configuración de prueba" en el menú "Prueba \ Configuración de prueba" para seleccionar nuevas configuraciones de prueba
Ejecutando mstest, use el parámetro / testsettings para que mstest use su testsettings.
fuente
Puede definir DeploymentItem en una clase que contiene un método con el atributo AssemblyInitialize. Entonces está seguro de que los archivos se copian independientemente de la prueba que ejecute.Desafortunadamente, el atributo DeploymentItem se ejecuta solo en las clases que contienen las pruebas que estás ejecutando. Entonces, si tiene 10 clases de prueba que usan el mismo conjunto de archivos, debe agregar el atributo a todas.
También descubrí que los cambios en los archivos * .testsettings no se actualizan automáticamente en Visual Studio. Por lo tanto, después de agregar archivos / carpetas a la implementación en configuraciones de prueba, debe volver a abrir el archivo de solución y luego ejecutar las pruebas.
fuente
En Visual Studio 2012, vstest.console.exe (el ejecutor de pruebas integrado) se ejecuta con el directorio de salida como la ruta actual. Esto significa que solo necesita incluir los elementos en su solución con la propiedad 'Copiar siempre' o 'Copiar si es más reciente' para que los utilice su prueba. No necesita el atributo DeploymentItem para el caso general. Lo mismo se aplica cuando se ejecuta vstest.console.exe desde la línea de comando dentro de su directorio de salida / prueba.
Hay algunos casos en los que se utiliza una carpeta separada, siendo uno de ellos cuando se utiliza el atributo DeploymentItem. Consulte aquí para obtener más información.
fuente