2009-04-08 23 views
13

Aquí está el problema:
1. Cree un TestProject en su solución de Visual Studio.
2. Abra el archivo .testrunconfig y en la opción de menú 'implementación', seleccione la casilla 'Habilitar implementación'.
3. Ahora haga clic en el botón 'Agregar directorio ...' y agregue una carpeta que contenga algunos archivos.
4. Ejecute el proyecto de prueba (use una prueba ficticia).Visual Studio Test Project - No copia la carpeta en la implementación

Bien, ahora vaya a la carpeta TestResults: verá que todos los archivos se copiaron directamente (al nivel superior): la carpeta no se copió (con los archivos debajo de ellos). Esto arruina mis caminos durante las pruebas. ¿Alguien puede decir cómo copiar la carpeta en lugar de solo los archivos que se encuentran debajo?

Gracias.

+0

Acabo de hacer lo que dijiste, y desmarqué 'Habilitar implementación' en la configuración de prueba para que deje de crear el nuevo directorio y use el directorio bin \ Debug existente en su lugar. Mucho mejor y menos con errores! –

Respuesta

17

Utilice el atributo [DeploymentItem] en las clases de prueba que lo utilizan. Se puede especificar un directorio:

[TestClass] 
[DeploymentItem("blahblah\\myDirectory", "myDirectory")] 
public class MyTest 
{ 

} 

Nota:

  • DeploymentItem es muy lento al iniciar las pruebas. Parece copiar 2 archivos por segundo.
  • Puede especificar el atributo en una clase base de prueba. Pero no siempre funciona si tiene más de un proyecto de prueba.
  • Probablemente pueda especificarlo en una TestClass que tenga un método marcado con [AssemblyInitialize]. Entonces solo debes proporcionarlo una vez. No estoy seguro, tienes que intentarlo.
  • El directorio de origen es relativo a la ubicación de la solución. Esto apenas está documentado.
+2

Hmm. Esto requiere hardcoding dentro de la clase de dispositivo de prueba en lugar del archivo .testrunconfig. Decidí desactivar 'Habilitar implementación' y estoy haciendo todo lo que está dentro de la carpeta bin \ Debug donde tengo todos los archivos de datos configurados como 'Copiar siempre'. Hace el trabajo. ¡Gracias por la información! – DeeStackOverflow

+2

Es sencillo desactivar el "despliegue". Pero debe considerar el riesgo de tener archivos en bin \ debug de compilaciones anteriores. Sus pruebas solo pueden ejecutarse/fallar en su máquina. Por lo tanto, limpie bin \ debug antes de ejecutar pruebas de vez en cuando. –

+0

esta publicación me acaba de salvar. ¡Gracias! – Jeremiah

0

La otra opción que tiene es crear otra carpeta debajo de la carpeta original, y luego esa carpeta se desplegará en el directorio de salida. Por ejemplo, usted puede tener la siguiente estructura:

TestFolder/

TestFolder/TestDeployment/

Y luego en el testrunconfig todavía se selecciona la carpeta y la carpeta TestFolder TestDeployment serán desplegados en el directorio de salida.

10

Abra el archivo .testsettings en el bloc de notas. Ahora, usted debe ver que por cada carpeta para copiar

<DeploymentItem filename="FolderName\" /> 

Cambiar esto a

<DeploymentItem filename="FolderName\" outputDirectory="FolderName\" /> 
+1

Esto es exactamente lo que necesitaba, gracias. Necesitaba reiniciar Visual Studio para que tuviese efecto. – Ciaran

+0

Variación en la respuesta anterior. Tenía filename = "FolderName \ SubfolderName \" que necesitaba ser convertido a filename = "SubfolderName \" outputDirectory = "SubfolderName \" para que funcione correctamente –

+0

Gracias, me ayuda. Necesita el mismo truco en VS2013 también. Me pregunto por qué necesitas usar el editor de texto para especificar outputDirectory. Microsoft debería corregir el diálogo de edición de ajustes de prueba. No me gustó la respuesta aceptada, esta es más limpia. –

0

acabo de tener este problema también hoy. Lo resolví agregando una carpeta llamada "deployment_files" en el proyecto que contenía la carpeta requerida. Luego coloco la carpeta requerida en la carpeta "deployment_files". ENTONCES, abrí el archivo LocalTestRun.testrunconfig en la carpeta "Elementos de solución" en el Explorador de soluciones. Fuimos al panel de "Despliegue" en la ventana de propiedades de testrunconfig. Se agregó el directorio "deployment_files" a la implementación y listo. La carpeta dentro de eso fue copiada a la carpeta Resultados de la prueba.

Cuestiones relacionadas